任何方法都可以用塊作爲隱式參數來調用。在方法內部,您可以使用yield關鍵字和值調用塊。 然後,方法可以使用Ruby yield語句一次或多次調用關聯的塊。
=begin
Ruby Code blocks are chunks of code between braces or
between do..end that you can associate with method invocations
=end
def call_block
puts 'Start of method'
# you can call the block using the yield keyword
yield
yield
puts 'End of method'
end
# Code blocks may appear only in the source adjacent to a method call
call_block {puts 'In the block'}
的輸出是::
>ruby p022codeblock.rb
Start of method
In the block
In the block
End of method
>Exit code: 0
如果提供一個碼塊時因此想要採取塊作爲參數可使用yield關鍵字,在任何時候執行該塊中的任何方法你調用一個方法,然後在方法裏面,你可以用yield
控制那個代碼塊 - 暫停執行該方法;執行塊中的代碼;並在調用產生後立即將控制權返回給方法體。如果沒有傳入代碼塊並調用yield
,則Ruby會引發異常。
您是否嘗試閱讀文檔? –