2012-12-20 12 views
6

rozważyć ten kodjak curry metodę?

def f x, y 
    x + y 
end 

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

g.(2) # => 3 

wyrażenie dla g jest zbyt trudne do odczytania. Czy można go uprościć?

Odpowiedz

6

myślę najkrótsza (! I najbardziej czytelny) można dostać się

g = method(:f).to_proc.curry[1] 
    g[2] # => 3 
+0

+1 dla będąc bardzo czytelnym dla użytkownika nie-rubinu –

7

Jeśli używasz Ruby 2.2.0 lub nowszy, można użyć Method#curry:

def f(x, y) 
    x + y 
end 
g = method(:f).curry[1] 
p g[2] # => 3