1
我正在從第360頁的書「The Rails Way」第3版中練習11.2.5將代碼存儲爲Proc對象,而我卻遇到了錯誤的正確輸出。 代碼在proc.rb文件「The Rails Way」第3版proc練習錯誤頁面360
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>'
紅寶石-v 紅寶石2.3.0p0(2015年12月25日修訂版53290)[x86_64的Linux的]
它給我另一個錯誤紅寶石proc.rb proc.rb:5:在'在塊 ':意外的返回(LocalJumpError)從proc.rb \t:2:在'迎接' \t從proc.rb :7:在'' –
我相信它不會將&philippe_proc和&philippe_lambda與Proc.new關聯{return「太快了,Philippe!」 }和{return「太快了,菲利普!」 } 分別。 &符號不能用作變量名稱的開始。 –
如果你有回報,lambda和proc之間是有區別的。返回從lambda返回的lambda,在這種情況下是可以的。但是從封閉方法返回一個proc返回值,在這種情況下你沒有一個返回值。這是問題。如果你在一個方法中嘗試,你沒有錯誤。但是你處於主要範圍。 – Ursus