В чем разница между filterOrElse и filterOrOther от Arrow? - PullRequest
0 голосов
/ 15 февраля 2019

Я не смог найти разницу между filterOrElse и filterOrOther

Подпись filterOrElse равна

inline fun <A, B> EitherOf<A, B>
.filterOrElse(predicate: (B) -> Boolean, default: () -> A): Either<A, B>

и filterOrOther is

inline fun <A, B> EitherOf<A, B>
.filterOrOther(predicate: (B) -> Boolean, default: (B) -> A): Either<A, B>

Различие, которое я видел, состоит в том, что filterOrOther имеет аргумент B для default лямбда.

по умолчанию: ( B ) -> A против по умолчанию: () -> A

Но я думаю, что есть еще одна причина иметь дваразные функции.Какова причина?а какая разница между ними?

1 Ответ

0 голосов
/ 16 февраля 2019

Если результат predicate равен false, filterOrOther дает вам возможность использовать этот аргумент B для генерации A с default.filterOrElse default - это просто производитель, который не использует B для генерации A.

...