Dartz - 离开 Either
Dartz - get left of Either
var newRight;
if(either.isRight()) {
newRight = either.getOrElse(() => throw UnimplementedError());
} else {
return Left(either.fold((f) => f, (r) => throw UnimplementedError()))
}
我怎样才能像上面的例子那样得到任一个的左侧和return它?还有其他更清洁的解决方案吗?
您可以使用 swap()
。它交换了 Either
的 Left
和 Right
部分
either.swap().getOrElse(() => throw UnimplementedError());
或者你可以使用折叠,如果你可以将左右缩小到相同的类型。
myEither.fold(fToApplyLeft, gToApplyRight)
var newRight;
if(either.isRight()) {
newRight = either.getOrElse(() => throw UnimplementedError());
} else {
return Left(either.fold((f) => f, (r) => throw UnimplementedError()))
}
我怎样才能像上面的例子那样得到任一个的左侧和return它?还有其他更清洁的解决方案吗?
您可以使用 swap()
。它交换了 Either
Left
和 Right
部分
either.swap().getOrElse(() => throw UnimplementedError());
或者你可以使用折叠,如果你可以将左右缩小到相同的类型。
myEither.fold(fToApplyLeft, gToApplyRight)