Ramda:如果 func returns 为真值,则在 compose 中使用它,否则 return 原样
Ramda: if func returns truthy value, use it in compose, else return as is
Ramda 是否有任何简洁的方式来编写这样的内容:
const ifOkCompose = (...args) => {
const r = foo(...args);
if (r) {
return compose(bar1, bar2)(r);
}
return r;
};
如果 foo() return 的值为真值,将其发送到 compose,否则只是 return。有 'when',但它会 return 个参数而不是 returned 'foo(...)' 的值。
换句话说,我有一个函数 foo 可能 return 未定义,我在 compose 中使用它作为 compose(bar1, bar2, foo)
。如果 foo(...) returns undefined 我想踢出 compose 而只是 return undefined.
我认为这样的方法可行:
const ifOkCompose = pipe(foo, when(identity, compose(bar1, bar2)));
- 初始参数传递给
foo
- 然后将结果传递给
identity
执行真实性检查
- 当为真时,结果传递给
compose(bar1, bar2)
- 否则结果原样返回
R.composeWith
的文档示例接近您的要求。
const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res))
composeWhileNotNil([bar1, bar2, foo])
最大的区别在于,这将在 any 无响应时停止合成,而不仅仅是第一个。显然,如果您只想停止 undefined
而不是 null
.
,则可以轻松更改它
Ramda 是否有任何简洁的方式来编写这样的内容:
const ifOkCompose = (...args) => {
const r = foo(...args);
if (r) {
return compose(bar1, bar2)(r);
}
return r;
};
如果 foo() return 的值为真值,将其发送到 compose,否则只是 return。有 'when',但它会 return 个参数而不是 returned 'foo(...)' 的值。
换句话说,我有一个函数 foo 可能 return 未定义,我在 compose 中使用它作为 compose(bar1, bar2, foo)
。如果 foo(...) returns undefined 我想踢出 compose 而只是 return undefined.
我认为这样的方法可行:
const ifOkCompose = pipe(foo, when(identity, compose(bar1, bar2)));
- 初始参数传递给
foo
- 然后将结果传递给
identity
执行真实性检查 - 当为真时,结果传递给
compose(bar1, bar2)
- 否则结果原样返回
R.composeWith
的文档示例接近您的要求。
const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res))
composeWhileNotNil([bar1, bar2, foo])
最大的区别在于,这将在 any 无响应时停止合成,而不仅仅是第一个。显然,如果您只想停止 undefined
而不是 null
.