簡體   English   中英

如何將塊傳遞給子方法?

[英]How to pass block to sub method?

說我有以下代碼:

def a(n, m, &block)
  yield if block_given?
end

def a
  # My question is here. When a is called, block might be or might not be
  # given. Below line is obvious wrong. How to call b and properly pass 
  # block to b?
  b(1, 2, &block)
end

a  # call a without block

a { # call a with a block
    puts "in block"
}

編寫a()以接受一個塊。 它暗示是可選的,並且如安德魯·馬歇爾(Andrew Marshall)所指出的那樣,如果沒有給出,將以&nil形式傳遞。

def b(n, m, &block)
  yield if block_given?
  puts "no block" if !block_given?
end

def a( &block )
  b(1, 2, &block)
end

a  # call a without block

a { # call a with a block
    puts "in block"
}

輸出:

no block
in block

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM