我正在做一些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'在這種情況下。由於該塊調用是該方法中的最後一行,該塊的結果將返回。 –