0

我正在研究函数式编程,Arrow-ktKotlin

我的用例如下:

我想执行Action并返回相关的Reaction

两者Action都有Reaction关联Side Effects

事件的顺序是

1)。在接受Action立即触发相关联的Actions Side Effects

2)。执行Action并获得Reaction

3)。触发Reactions Side Effects

4)。返回Reaction结果。

请求执行操作时要考虑的其他因素

一个)。当行动从未执行过时;完成整个序列,例如步骤 1 - 4。

乙)。执行时Action;将序列短路,以使步骤 2 - 4 未完成

C)。完成时Action;短路步骤 1 - 3 并返回Reaction结果

上面提到的副作用包括LoggingAnalyticsUser Interface效果。

我感觉我要求立即触发ActionReaction副作用意味着函数式编程解决方案不适合我的用例

Arrow-kt我发现的演示文稿和博客描述了如何根据引发的错误条件或使用withEither来短路序列,并实现相同类型的行为。OptionSomeNone

我遇到的困难

一世)。从哪里开始????

ii)。完成四个步骤,如何控制/管理“短路”,以便完成步骤 1 - 4、仅步骤 1 或仅步骤 4

是否可以使用函数式编程实现所需的行为?

4

1 回答 1

3

您的案例的最佳起点是https://arrow-kt.io/docs/patterns/error_handling/

如果您想做诸如日志记录之类的副作用,您可以做的最简单的事情就是使它们都具有将它们suspend标记为不纯的功能。这样你的整个程序将是一个挂起函数调用链。

您必须在 main 中执行第一个挂起函数,或者在业务逻辑的开头,例如Activity#onCreate,或您的Controller. 要执行第一个挂起功能,请使用IO { myBusinessLogic() }.unsafeRunAsync { }

于 2019-11-30T10:47:02.537 回答