<分区>
如果你使用一个有 yield 的方法,但没有向它传递一个 block ,会发生什么?
class SomeClass < Array
def some_method
yield(self[i])
end
end
a = SomeClass.new
a.some_method
有没有办法设置默认行为:如果没有给出其他方法,则让方法默认 block 运行?
<分区>
如果你使用一个有 yield 的方法,但没有向它传递一个 block ,会发生什么?
class SomeClass < Array
def some_method
yield(self[i])
end
end
a = SomeClass.new
a.some_method
有没有办法设置默认行为:如果没有给出其他方法,则让方法默认 block 运行?
最佳答案
您可以使用 Kernel#block_given?
确定 block 是否通过并采取适当的操作。
class SomeClass < Array
def some_method
if block_given?
yield(self[i])
else
# not given
end
end
end
这意味着如果未通过阻止,您也可以执行默认操作。
关于ruby - 如果方法内部有 yield,但没有传递 block 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096157/