2015-07-29 2 views
1

Почему при запуске метода ifElse здесь false log "function two (onTruthy)"?Ramda ifElse ведет себя странно

var x = R.ifElse(R.T, function(){ 
    console.log("function two (onTruthy)") 
    // console.log(arguments) 
}, function(){ 
    console.log("function three (onFalsy)") 
    // console.log(arguments) 
}) 
x(false) 

Я думаю, что это потому, что R.T всегда возвращается к истине. Возможно, используя _.isMatch Я могу совместить это?

Update: Только что попробовал:

var x = R.pipe(
    R.partialRight(R.match, true), 
    R.partialRight(R.ifElse, function(){ 
    console.log("function two (onTruthy)") 
    // console.log(arguments) 
    }, function(){ 
    console.log("function three (onFalsy)") 
    // console.log(arguments) 
    }) 
) 

ответ

3

R.T оценивает true для любого входа. Таким образом, R.ifElse(R.T, f, g) может быть упрощен до f.

Мне кажется, что вы ищете R.ifElse(R.identity, f, g), но это, вероятно, может быть лучше выражено через ... ? ... : ....

Смежные вопросы