簡體   English   中英

Ruby:塊中的yield塊?

[英]Ruby: yield block from a block?

ruby中的lambdaprocmethod或其他類型的塊是否有可能屈服於另一個塊?
就像是...

a = lambda {
  puts 'in a'
  yield if block_given?
}

a.call { puts "in a's block" }

這不起作用......它只是產生

in a
=> nil

有沒有辦法讓塊調用一個塊?

你可以調用塊,這類似於屈服。

a = lambda {|&block| block.call if block}
a.call {print "hello"}

注意

a.call

不會返回錯誤。

我不確定你能否做到,但類似的東西會是:

在Ruby 1.8.6中:

a = lambda { |my_proc|
  puts 'in a'
  my_proc.call
}

a.call(lambda { puts "in a's block" })

在Ruby 1.9.1中,您可以擁有塊參數

a = lambda { |&block|
  puts 'in a'
  block.call
}

a.call { puts "in a's block" }

暫無
暫無

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

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