我在以下调用Ruby lambda时遇到了问题。
我有一个接受Proc
的函数,并且下面是lambda定义。
def call_proc_with_arg(&b)
b.call(1)
end
lam = -> (a) { puts "printing the argument #{a}"}
当我尝试将lambda传递给函数时,
call_proc_with_arg(lam)
我遇到了错误:
回溯(最近的调用在最后): 6: 来自 /usr/bin/irb:23:in <code><main>' 5: 来自 /usr/bin/irb:23:in load' 4: 来自 /Library/Ruby/Gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in <top (required)>' 3: 来自 (irb):118 2: 来自 (irb):118:in rescue in irb_binding' 1: 来自 (irb):52:in `call_block' 参数错误(给定1个,期望0个)
然而该函数可与块一起使用。
call_proc_with_arg {|a| puts "printing the argument #{a}"}
我对lambda表达式漏了什么?
call_block
? - Sebastián Palmacall_proc_with_arg
。已更正。谢谢! - Kannan Ramamoorthy&b
中删除&
,或者(2)向lam
添加&
:call_proc_with_arg(&lam)
。 - Mattcall_proc_with_arg(lam)
上遇到了参数错误,所以问题不在于调用lambda函数,而在于传递lambda函数。 - Stefan