如何链接具有描述业务流程的不同签名的方法?

问题描述 投票:0回答:1

我想用返回的链式方法来描述以下过程。

该进程接收包含 

Either

WhateverInput
的上下文对象,并按以下步骤处理这些对象:

验证WhateverInput
  • 将WhateverInput映射到WhateverEntity
  • 将WhateverEntity保存在存储中
  • 将返回的WhateverEntity(此时有Id)映射到WhateverResult
  • 如果进程失败,
correlationId

用于标记该操作属于哪个进程。

我尝试的是 

correlationId

map
,但它们都期望一个函数,其中输入是 Either's Right,并且 Either 作为返回值。然而,我的方法签名如下所示,因为我不想将相关 ID 放入字段中。
flatMap

如何以良好、最佳/良好实践的方式做到这一点?我能想到的是创建一个 
public class VavrPractice { public static void handle(Context context) { var result = Either.right(context) .map(validateInput(context.getWhateverEntityInput(), context.getCorrelationId())) // shows error } private static Either<ErrorResult, WhateverEntityInput> validateInput(WhateverEntityInput whateverEntityInput, UUID correlationId) {} private static Either<ErrorResult, WhateverEntity> mapToWhateverEntity(WhateverEntityInput whateverEntityInput, UUID correlationId) {} private static Either<ErrorResult, WhateverEntity> saveToDatabase(WhateverEntityInput whateverEntityInput, UUID correlationId) {} private static Either<ErrorResult, WhateverEntityResult> mapToWhateverEntityResult(WhateverEntity whateverEntity, UUID correlationId) {} }

对象,向其添加

Context
WhateverInput
,并且这个
correlationId
将是
Context
Right
一侧,并在方法之间移动这个对象。但是,感觉有点笨重。
我同时学习 Java 和 C# 中的函数式编程,上面的示例可以使用 

Either

在 C# 中完成,我正在寻找一个等效项或解决方案

Bind
,它看起来像什么
 Bind
map
,可以做到。
仅供参考,

这个

确切的问题在 GitHub 上的 vavr 存储库中提出。

java functional-programming vavr
1个回答
0
投票
flatMap

代替

Result
Either

	
© www.soinside.com 2019 - 2024. All rights reserved.