Ruby:块中的yield块?

ruby中的lambdaprocmethod或其他类型的块是否有可能屈服于另一个块?
就像是…

 a = lambda { puts 'in a' yield if block_given? } a.call { puts "in a's block" } 

这不起作用……它只是产生

 in a => nil 

有没有办法让块调用一个块?

我不确定你是否能做到这一点,但类似的东西是:

在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" } 

你可以调用块,这类似于屈服。

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

注意

 a.call 

不会返回错误。