在Dave Thomas和Chad Fowler以及Andy Hunt撰写的 Programming Ruby:The Pragmatic Programmers Guide 一书中,关于Proc
的创建,有一个脚注说明:
“实际上有第三个,proc,但它实际上已被弃用。”
我找不到这个方式。我知道以下创建Proc
的方法:
1
b = lambda { | msg | puts "msg: #{msg}" }
b.call("hi")
2
def create_block_object(&block)
block
end
b = create_block_object{ |msg| puts "msg: #{msg}" }
b.call("hello")
3
b = Proc.new { |msg| puts "msg: #{msg}"}
b.call("hey")
我想知道第四种方式,如果有人给我一个答案,我会很高兴。
答案 0 :(得分:1)
这是lambdas的另一种语法:
b = ->(msg) { puts "msg: #{msg}" }
b.call("hi")
答案 1 :(得分:1)
您所指的书是在Ruby 1.8上。
在该版本的Ruby中,lambda
和procs
实际上是别名,而Proc
则是另一种野兽。这显然具有误导性,这就是为什么不建议您在
proc
prc = proc {|x, y| puts x + y}
此语法被认为已弃用,建议在这种情况下使用lambda。
这对于以后的Ruby版本不再有效,从1.9开始。
答案 2 :(得分:0)
prc = proc {| x | x * x}已被折旧。
此语法过程主要用于Ruby-1.8.7版本。