如果您使用具有yield的方法而不将块传递给它会发生什么?
class SomeClass < Array
def some_method
yield(self[i])
end
end
a = SomeClass.new
a.some_method
有没有办法设置默认行为:如果没有给出其他方法,请给方法默认块运行?
答案 0 :(得分:4)
您可以使用Kernel#block_given?
来确定是否传递了一个块并采取相应的操作。
class SomeClass < Array
def some_method
if block_given?
yield(self[i])
else
# not given
end
end
end
这意味着如果未传递阻止,您也可以使用默认操作。