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