这是我的代码:
def f x
x
end
g = method(:f).to_proc.curry.(123)
p g
我希望g
是一个不带参数的可调用对象,并将123
应用于f
。相反,g
包含应用程序的结果。
我这么复杂吗?
编辑:是的,g = lambda {f 123}
有效,但我问的是如何评价f
。
答案 0 :(得分:4)
如果提供了足够数量的参数,它会将提供的参数传递给原始proc并返回结果。
所以在这种情况下,从理论的角度来看,你并没有真正理解你的功能,但实际上你已经拥有了。
g = lambda {f 123}
似乎更接近于返回一个函数的精神,然后你可以调用它来评估,至少在确定所有参数之后。
答案 1 :(得分:-1)
Maybe you want to wrap your function f
inside a lambda
(evaluating f). Then you can curry the lambda
expression, something like this:
g = lambda{f 123}.curry
p g[] // or g.call
Now g
is callable that takes no parameters.