哪一个是Ruby弃用的proc?

时间:2013-03-17 15:42:07

标签: ruby lambda proc ruby-1.8

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

我想知道第四种方式,如果有人给我一个答案,我会很高兴。

3 个答案:

答案 0 :(得分:1)

这是lambdas的另一种语法:

b = ->(msg) { puts "msg: #{msg}" }
b.call("hi")

答案 1 :(得分:1)

您所指的书是在Ruby 1.8上。

在该版本的Ruby中,lambdaprocs实际上是别名,而Proc则是另一种野兽。这显然具有误导性,这就是为什么不建议您在

中使用proc
prc = proc {|x, y| puts x + y}

此语法被认为已弃用,建议在这种情况下使用lambda。

这对于以后的Ruby版本不再有效,从1.9开始。

答案 2 :(得分:0)

prc = proc {| x | x * x}已被折旧。

此语法过程主要用于Ruby-1.8.7版本。