1

在 Dave Thomas 与 Chad Fowler 和 Andy Hunt 所著的Programming Ruby: The Pragmatic Programmers Guide一书中,关于Procs 的创建,有一个脚注指出:

“实际上还有第三个,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")

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

4

3 回答 3

1

这是 lambda 的另一种语法:

b = ->(msg) { puts "msg: #{msg}" }
b.call("hi")
于 2013-03-17T15:53:34.673 回答
1

您所指的书是关于 Ruby 1.8 的。

在那个版本的 Ruby 中,lambda实际上procs是别名,Proc而是不同的野兽。这显然是一种误导,这就是为什么不建议您使用procas in

prc = proc {|x, y| puts x + y}

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

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

于 2013-03-17T16:03:10.263 回答
0

prc = 过程 {|x| x*x} 已折旧。

这种语法主要用于 Ruby-1.8.7 版本。

于 2014-08-06T18:49:26.513 回答