是否有可能为一lambda
,proc
,method
或其他类型的宝石块,以获得到另一个块?
就像是...
a = lambda {
puts 'in a'
yield if block_given?
}
a.call { puts "in a's block" }
Run Code Online (Sandbox Code Playgroud)
这不起作用......它只是产生
in a
=> nil
Run Code Online (Sandbox Code Playgroud)
有没有办法让块调用一个块?
你可以调用块,这类似于屈服.
a = lambda {|&block| block.call if block}
a.call {print "hello"}
Run Code Online (Sandbox Code Playgroud)
注意
a.call
Run Code Online (Sandbox Code Playgroud)
不会返回错误.
我不确定你能否做到,但类似的东西会是:
在Ruby 1.8.6中:
a = lambda { |my_proc|
puts 'in a'
my_proc.call
}
a.call(lambda { puts "in a's block" })
Run Code Online (Sandbox Code Playgroud)
在Ruby 1.9.1中,您可以拥有块参数
a = lambda { |&block|
puts 'in a'
block.call
}
a.call { puts "in a's block" }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3838 次 |
最近记录: |