我想用返回的链式方法来描述以下过程。
该进程接收包含Either
和
WhateverInput
的上下文对象,并按以下步骤处理这些对象:
验证WhateverInputcorrelationId
用于标记该操作属于哪个进程。
我尝试的是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
,可以做到。仅供参考,这个
flatMap
代替
Result
?Either