Dartz - 离开任一

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)

我怎样才能得到其中任何一个的左侧并将其返回,如上例所示?还有其他更清洁的解决方案吗?

Tah*_*aha 5

您可以使用swap()。它交换了 的LeftRight的一部分Either

either.swap().getOrElse(() => throw UnimplementedError());

或者如果您可以将左侧和右侧缩小为相同类型,则可以使用折叠。

myEither.fold(fToApplyLeft, gToApplyRight)