Kotlin Filterorese和FilterRother与Arrow有什么区别?

Kotlin Filterorese和FilterRother与Arrow有什么区别?,kotlin,functional-programming,arrow-kt,Kotlin,Functional Programming,Arrow Kt,我找不到和之间的区别 签名 filterOrElse inline fun <A, B> EitherOf<A, B> .filterOrElse(predicate: (B) -> Boolean, default: () -> A): Either<A, B> inline fun <A, B> EitherOf<A, B> .filterOrOther(predicate: (B) -> Boolean, de

我找不到和之间的区别

签名
filterOrElse

inline fun <A, B> EitherOf<A, B>
.filterOrElse(predicate: (B) -> Boolean, default: () -> A): Either<A, B>
inline fun <A, B> EitherOf<A, B>
.filterOrOther(predicate: (B) -> Boolean, default: (B) -> A): Either<A, B>
我看到的不同之处是,
filterother
有一个参数
B
用于
default
lambda

默认值:(B)->A与默认值:()->A


但我认为有两种不同功能还有另一个原因。原因是什么?它们之间有什么区别

如果
谓词
的结果是
false
过滤器Rother
为您提供使用该参数
B
生成
A
默认值
的选项
FilterRelese
default
只是一个生产者,它不使用
B
来生成
a

,根据文档,这确实是唯一的区别。换句话说,这正是我在问题中所说的吗?基本上是的。需要注意的是,
predicate
中使用的参数
B
default
中使用的参数相同。出于某种原因,我说过你可以使用
filterOrElse
来保护自己(和/或更大项目中的其他同事)免受
B
default
lambda中引起的奇怪/骇人的副作用。你的意思是“仅在
谓词中使用
B
,在
默认值中使用
B
是个坏主意”。