簡體   English   中英

Ruby 中的可選顯式塊參數?

[英]Optional explicit block parameter in Ruby?

如評論中所述,問題實際上就是答案。

如果該方法得到一個塊,我想進一步使用它。 但我也有一個不需要該塊的變體。 我可以以任何方式做到這一點嗎?

例如:

def maybe_gets_block(&blk)
  if blk
    STDERR.puts "Yay! I’ve got a block!"
    @callback = blk
  else
    STDERR.puts "I don’t have a block"
    @callback = nil
  end
end

使用內核#block_given?

您可能正在尋找Kernel#block_given? . 通常,您會將其與Object#yield結合使用。 例如,這是一個片段,它將作用於一個可選的塊或 proc,然后再退回到其他一些動作。

def maybe_gets_block prc=nil
  if block_given?
    yield
  elsif prc.is_a? Proc
    prc.call
  else
    # do something else
  end
end

暫無
暫無

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

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