Chr*_*ris 4 functional-programming dart dartz
var newRight;
if(either.isRight()) {
newRight = either.getOrElse(() => throw UnimplementedError());
} else {
return Left(either.fold((f) => f, (r) => throw UnimplementedError()))
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到其中任何一个的左侧并将其返回,如上例所示?还有其他更清洁的解决方案吗?
您可以使用swap()。它交换了 的Left和Right的一部分Either
either.swap().getOrElse(() => throw UnimplementedError());
或者如果您可以将左侧和右侧缩小为相同类型,则可以使用折叠。
myEither.fold(fToApplyLeft, gToApplyRight)