Per quanto riguarda accattivarsi in Ruby 1.9.x, ho usato in alcuni luoghi, e può essere tradotto come fondamentalmente sostenere i parametri di default per gli argomenti proc:Ruby Reverse Currying: è possibile?
p = proc {|x, y, z|x + y + z}
p.curry[1] #=> returns a lambda
p.curry[1, 2] #=> returns a lambda
p.curry[1, 2, 3] #=> 6
p2 = p.curry[1, 2]
p2.(2) #=> 5
p2.(4) #=> 7
molto utile, giusto? La cosa è che mi piacerebbe essere in grado di curry al contrario, cioè, riempire l'ultimo argomento del mio proc con un valore casuale. Così:
p = proc{|x, y| x - y }.curry[1]
p.(4)
il mio risultato desiderato sarebbe 3. questo restituisce -3.
Humm, sembra abbastanza pulito, andando a fare un tentativo. Il caso d'uso è quello di replicare in un determinato punto lo stesso comportamento derivante dall'avere argomenti predefiniti sui metodi, e questi possono essere impostati solo dall'ultimo argomento all'indietro. Volevo utilizzare lo stesso metodo e sostituire l'argomento predefinito con un valore diverso in un contesto diverso. – ChuckE