如果方法内部有 yield,但没有传递块怎么办?
What if method has yield inside, but a block wasn't passed to it?
如果你使用一个有 yield 的方法,但没有向它传递一个块,会发生什么?
class SomeClass < Array
def some_method
yield(self[i])
end
end
a = SomeClass.new
a.some_method
有没有办法设置默认行为:如果没有提供其他方法,则将方法默认块提供给 运行?
您可以使用 Kernel#block_given?
来确定一个块是否通过并采取适当的行动。
class SomeClass < Array
def some_method
if block_given?
yield(self[i])
else
# not given
end
end
end
这意味着如果阻止未通过,您也可以有默认操作。
如果你使用一个有 yield 的方法,但没有向它传递一个块,会发生什么?
class SomeClass < Array
def some_method
yield(self[i])
end
end
a = SomeClass.new
a.some_method
有没有办法设置默认行为:如果没有提供其他方法,则将方法默认块提供给 运行?
您可以使用 Kernel#block_given?
来确定一个块是否通过并采取适当的行动。
class SomeClass < Array
def some_method
if block_given?
yield(self[i])
else
# not given
end
end
end
这意味着如果阻止未通过,您也可以有默认操作。