如何用一个参数来讨论方法

时间:2013-02-08 17:36:51

标签: ruby

这是我的代码:

def f x
  x
end

g = method(:f).to_proc.curry.(123)

p g

我希望g是一个不带参数的可调用对象,并将123应用于f。相反,g包含应用程序的结果。

我这么复杂吗?

编辑:是的,g = lambda {f 123}有效,但我问的是如何评价f

2 个答案:

答案 0 :(得分:4)

documentation for curry

  

如果提供了足够数量的参数,它会将提供的参数传递给原始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.