我试图创建一个Ruby方法: 1.接受为输入,它接受参数和 2.返回作为输出一个PROC这需要一个参数(另一说法被传递与PROC第一个处理程序)Ruby - 将Proc.Call作为变量返回?
下面的代码。我读过的关于Ruby如何处理函数式作用域的一切都表明我应该能够返回一个proc.call作为变量,并且我不明白为什么我会收到“意外返回”错误(转载于代码)
(我显然是一个开始Rubyist ......我的经验大多是在JavaScript中,在做这样的事情的机制是,我认为,直观得多)
-
def partial (proc1, val1)
return Proc.new {|val2| return proc1.call(val1,val2)}
end
adder = Proc.new {|a,b| a + b}
sum_five = partial(adder,5)
sum_five.call(10) # -- expecting 15
# unexpected return
# (repl):13:in `block in partial'
# (repl):20:in `<main>'
顺便说一句,在所有return语句这个例子是多余的,可以在不改变代码含义的情况下删除。 –
这工作......谢谢!从您的评论和其他来源,我得到的感觉是,lambda比JavaScript更加接近特效(可以通过对范围的关注较少来传递)。 –