Ruby:块中的yield块?
ruby中的lambda
, proc
, method
或其他类型的块是否有可能屈服于另一个块?
就像是…
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
不会返回错误。