考虑这段代码
def f x, y
x + y
end
g = lambda(&method(:f)).curry.(1)
g.(2) # => 3
g
的表达式太难读了。可以简化吗?
答案 0 :(得分:9)
如果您使用的是Ruby 2.2.0或更高版本,则可以使用Method#curry:
def f(x, y)
x + y
end
g = method(:f).curry[1]
p g[2] # => 3
答案 1 :(得分:7)
我认为你能得到的最短(也是最可读的!)是
g = method(:f).to_proc.curry[1]
g[2] # => 3