这是我的代码:
def f x
x
end
g = method(:f).to_proc.curry.(123)
p g
我想g
成为一个不带参数并适用123
于f
. 相反,g
包含应用程序的结果。
我这样做是不是很复杂?
编辑:是的,g = lambda {f 123}
有效,但我在问如何咖喱f
。
这是我的代码:
def f x
x
end
g = method(:f).to_proc.curry.(123)
p g
我想g
成为一个不带参数并适用123
于f
. 相反,g
包含应用程序的结果。
我这样做是不是很复杂?
编辑:是的,g = lambda {f 123}
有效,但我在问如何咖喱f
。
咖喱的文档说
如果提供了足够数量的参数,它会将提供的参数传递给原始 proc 并返回结果。
所以在这种情况下,从理论的角度来看,你并没有真正对你的函数进行柯里化,但实际上你已经做到了。这
g = lambda {f 123}
似乎更接近返回函数的精神,然后您可以调用该函数进行评估,至少在确定所有参数后。
也许您想将函数包装f
在 a lambda
(评估 f)中。然后你可以对lambda
表达式进行柯里化,如下所示:
g = lambda{f 123}.curry
p g[] // or g.call
现在g
是可调用的,不带参数。