我正在做一些Ruby Koan练习。由于我是一个新手,所以有些代码对我来说似乎没有意义。例如,在一个参数在Ruby中的参数前做了什么?
def method_with_explicit_block(&block)
block.call(10)
end
def test_methods_can_take_an_explicit_block_argument
assert_equal 20, method_with_explicit_block { |n| n * 2 }
add_one = lambda { |n| n + 1 }
assert_equal 11, method_with_explicit_block(&add_one)
end
前面的&
为什么有block
和add_one
前&
?使它们成为全局变量或将它们引用到以前的变量中?
谢谢!
你基本上是通过一段代码作为参数,当在你的方法中使用'call'时,你在调用那个块并在那里使用它。因此,您可以看到'method_with_explicit_block({| n | n * 2})',您正在调用此方法并传递该块参数。在方法'method_with_explicit_block'中,你可以看到它被称为'block.call(10)',并且一个参数为'10'被传递给该块。在块{{| n | n * 2}','n = 10'在这种情况下。由于该块调用是该方法中的最后一行,该块的结果将返回。 –