如何中断、退出 compose 或 pipe?
How to interrupt, exit a compose or pipe?
中断一长串组合或管道函数的正确方法是什么?
假设链在第二个函数之后不需要 运行,因为它发现了一个无效值,并且只要用户提交的值无效,它就不需要继续接下来的 5 个函数。
你是否 return 未定义/空参数,所以其余函数只是检查是否没有值 returned,在这种情况下只是继续传递空参数?
我认为没有通用的处理方法。
通常在使用 algebraic data types 时,定义了一些东西,这样即使您想要的数据不存在,您也可以继续 运行 函数。例如,这是 Maybe
和 Either
等类型的极其有用的功能之一。
但是 compose
或相关函数的大多数版本都没有为您提供早期转义机制。 Ramda 肯定不会。
虽然从技术上讲您无法退出管道,但您可以在管道内使用 pipe(),因此您没有理由不能对 'exit'(return从管道或踢到另一个管道):
pipe(
// ... your pipeline
propOr(undefined, 'foo'), // - where your value is missing
ifElse(isNil, always(undefined), pipe(
// ...the rest of your pipeline
))
)
中断一长串组合或管道函数的正确方法是什么?
假设链在第二个函数之后不需要 运行,因为它发现了一个无效值,并且只要用户提交的值无效,它就不需要继续接下来的 5 个函数。
你是否 return 未定义/空参数,所以其余函数只是检查是否没有值 returned,在这种情况下只是继续传递空参数?
我认为没有通用的处理方法。
通常在使用 algebraic data types 时,定义了一些东西,这样即使您想要的数据不存在,您也可以继续 运行 函数。例如,这是 Maybe
和 Either
等类型的极其有用的功能之一。
但是 compose
或相关函数的大多数版本都没有为您提供早期转义机制。 Ramda 肯定不会。
虽然从技术上讲您无法退出管道,但您可以在管道内使用 pipe(),因此您没有理由不能对 'exit'(return从管道或踢到另一个管道):
pipe(
// ... your pipeline
propOr(undefined, 'foo'), // - where your value is missing
ifElse(isNil, always(undefined), pipe(
// ...the rest of your pipeline
))
)