lambda
、proc
、method
或 ruby 中的其他类型的 block 是否有可能产生另一个 block ?
像...
a = lambda {
puts 'in a'
yield if block_given?
}
a.call { puts "in a's block" }
这不起作用......它只是产生
in a
=> nil
有没有办法让 block 调用 block ?
最佳答案
我不确定你是否可以做到这一点,但类似的事情是:
在 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 中,你可以有 block 参数
a = lambda { |&block|
puts 'in a'
block.call
}
a.call { puts "in a's block" }
关于Ruby:从 block 中产生 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602089/