2017-05-24 2 views
0

Ich habe eine höhere Funktion Auftrag: Lassen Sie uns fürReverse-Argumente bestellen in curried Funktion (Ramda js)

Einfachheit sagen
const divideLeftToRight = x => y => x/y; 

Ich möchte eine Funktion haben, die die Teilung führt, sondern von ‚rechts nach links‘. Mit anderen Worten, ich muss haben:

const divideRightToLeft = x => y => y/x; 

dachte ich über das tun:

const divideRightToLeft = R.curry((x,y) => divideLeftToRight(y)(x));

Ich frage mich, ob es eine elegantere Weg ist, es zu tun

Antwort

2

Sie suchen für die flip function:

const divideRightToLeft = R.flip(divideLeftToRight) 
+0

flip funktioniert nicht mit meiner übergeordneten Funktion (es sei denn, man zwickt vielleicht). http://ramdajs.com/repl/#?const%20divideLeftToRight%20%3D%20x%20%3D%3E%20y%20%3D%3E%20x%2Fy%3B%0A%0A%0Aconst% 20divideRightToLeft% 20% 3D% 20R.flip% 28divideLeftToRight% 29% 0A% 0AdivideRightToLeft% 282% 29% 2833% 29 wenn meine Funktion war: const divideLeftToRight = (x, y) => x/y; dann würde das Spiegeln von Argumenten funktionieren – tcoder01

+0

Funktioniert 'flip' mit Funktionen, die von ramda selbst curirt werden (nicht durch verschachtelte Pfeilfunktionen)? – Bergi

+0

@Bergi: nicht genau. Sie kippt die ersten beiden Argumente jeder Funktion (Arity 2+). Es würde gut funktionieren mit '(x, y) => x/y'. Oder alternativ könnte man 'flip' mit' uncurryN' verwenden. Aber es weiß nicht, was mit einer Arity-1-Funktion zu tun ist. –