作者:loring8 | 来源:互联网 | 2023-05-23 13:36
我想了解以下行为:
def test
puts "In Method"
end
test
#=> In Method
test {puts "In Block" }
#=> In Method
我的解释是,这test
是一种方法,我{puts "In Block"}
作为一个参数传递给这个方法.由于该方法不使用参数,因此它将打印默认值"In Method"
.这样对吗?
我们如何区分块和方法调用?可能test {puts "In Block"}
也被解释为一个块?是yield
执行代码块的唯一方法吗?
1> sawa..:
由于该方法不使用[block],因此它将打印默认的"In Method".这样对吗?
不,你错了.它是打印的,"In Method"
因为您定义了这样做的方法.
yield是执行代码块的唯一方法吗?
不,你可以接受一个块作为proc使用&
,并调用call
它.
def foo &block
block.call(arguments)
end