8

考虑这段代码

def f x, y
  x + y
end

g = lambda(&method(:f)).curry.(1)

g.(2) # => 3

for 的表达g太难读了。可以简化吗?

4

2 回答 2

12

如果您使用的是 Ruby 2.2.0 或更高版本,则可以使用Method#curry

def f(x, y)
  x + y
end
g = method(:f).curry[1]
p g[2] # => 3
于 2014-10-14T05:05:04.977 回答
8

我认为你能得到的最短(也是最易读的!)是

  g = method(:f).to_proc.curry[1]
  g[2] # => 3
于 2012-12-20T18:52:43.717 回答