class C
attr_accessor :v
def initialize(arg)
@v = arg
end
def meth(arg=nil)
return arg.meth unless (arg.nil?) && !(arg.is_a? self.class)
@v
end
end
arg が nilではなく、 if の場合meth
に実行したいです。それ以外の場合は戻ります。しかし、この部分は間違っていると思います。何が悪いのか理解できませんでした。arg.meth
arg.is_a?C
@v
!(arg.is_a? self.class)
x = C.new("first")
y = C.new("second")
x.meth #=> "first"
x.meth(y) #=> "second"
x.meth(10) #=> I was expecting 'first'
But I get NoMethodError: undefined method `meth' for 10:Fixnum
否定したくないarg.nil?
実現したいarg.is_not_a?
更新: 私の質問は紛らわしいようです。私はここで明確にしようとしています
if the argument passed to meth is not nil and is of type C then
call arg.meth
else
return @v
end