Zac*_*ack 1 ruby yield codeblocks
我想了解以下行为:
def test
puts "In Method"
end
test
#=> In Method
test {puts "In Block" }
#=> In Method
Run Code Online (Sandbox Code Playgroud)
我的解释是,这test是一种方法,我{puts "In Block"}作为一个参数传递给这个方法.由于该方法不使用参数,因此它将打印默认值"In Method".这样对吗?
我们如何区分块和方法调用?可能test {puts "In Block"}也被解释为一个块?是yield执行代码块的唯一方法吗?
由于该方法不使用[block],因此它将打印默认的"In Method".这样对吗?
不,你错了.它是打印的,"In Method"因为您定义了这样做的方法.
yield是执行代码块的唯一方法吗?
不,你可以接受一个块作为proc使用&,并调用call它.
def foo &block
block.call(arguments)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |