2017-12-04 9 views
0

誰かがこの動作を教えてくれますか、それともバグですか?複数の引数を持つ関数に対してRamDA ifElseが実行されない

const firstTest = (a) => console.log(a, 'this will be executed'); 
const secTest = (a, b) => console.log(a, 'this will not be executed'); 

const firstIfElse = R.ifElse(R.T, firstTest,() => null); 
const unexpectedIfElse = R.ifElse(R.T, secTest,() => null); 

firstIfElse('logging appears as expected'); 
unexpectedIfElse('no logging'); 

example in REPL

答えて

1

あなたの第二の機能はカレーバイナリ機能です。 ifElseは、それに渡された3つの関数の最大値を、predicate,ifTrue、およびifFalseから選択します。 R.Tは、() => nullがするように、アリティ1を持っていますが、アリティ2をsecTest持つのでunexpectedIfElseもアリティ2

あなたが「いいえログ」でunexpectedIfElseを呼び出したときに、あなたが戻って(役に立たない)bパラメータを待っている機能を取得します。

このような複雑さが気に入らない理由はありますが、特に述語にとっては非常に便利な場合があります。

あなたは

unexpectedIfElse('no logging', 'ignored'); 

ようかのようにそれを呼び出すことによって、あなたの問題を解決することができます

unexpectedIfElse('no logging')('ignored') 
関連する問題