"The Rails Way" 第 3 版 proc 练习错误页面 360
"The Rails Way" 3-rd edition proc exercise error page 360
我正在做书 "The Rails Way" 第 3 版 11.2.5 将代码存储为 Proc 对象中第 360 页的练习,但我得到了错误而不是正确的输出。
proc.rb 文件中的代码
def greet(&block)
block.call
"Good morning, everyone."
end
philippe_proc = Proc.new { return "Too soon, Philippe!" }
philippe_lambda = lambda { return "Too soon, Philippe!" }
p greet(philippe_proc) # Too soon, Philippe!
p greet(philippe_lambda) # Good morning, everyone.
输出为
ruby proc.rb
proc.rb:1:in `greet': wrong number of arguments (given 1, expected 0) (ArgumentError)
from proc.rb:7:in `<main>'
ruby-v
ruby 2.3.0p0(2015-12-25 修订版 53290)[x86_64-linux]
尝试
p greet(&philippe_proc)
p greet(&philippe_lambda)
块是特殊参数。当您将 greet
定义为
def greet(&block)
那 & 意味着它不是 "normal parameter" 而是一个块、一个过程、一个 lambda,即使在调用该方法时你也必须这样说。
这是因为如果你有一个方法接受一个参数和一个块,而你只传递其中一个,否则你无法说出它们是哪一个。
我正在做书 "The Rails Way" 第 3 版 11.2.5 将代码存储为 Proc 对象中第 360 页的练习,但我得到了错误而不是正确的输出。 proc.rb 文件中的代码
def greet(&block)
block.call
"Good morning, everyone."
end
philippe_proc = Proc.new { return "Too soon, Philippe!" }
philippe_lambda = lambda { return "Too soon, Philippe!" }
p greet(philippe_proc) # Too soon, Philippe!
p greet(philippe_lambda) # Good morning, everyone.
输出为
ruby proc.rb
proc.rb:1:in `greet': wrong number of arguments (given 1, expected 0) (ArgumentError)
from proc.rb:7:in `<main>'
ruby-v ruby 2.3.0p0(2015-12-25 修订版 53290)[x86_64-linux]
尝试
p greet(&philippe_proc)
p greet(&philippe_lambda)
块是特殊参数。当您将 greet
定义为
def greet(&block)
那 & 意味着它不是 "normal parameter" 而是一个块、一个过程、一个 lambda,即使在调用该方法时你也必须这样说。
这是因为如果你有一个方法接受一个参数和一个块,而你只传递其中一个,否则你无法说出它们是哪一个。