【发布时间】:2021-11-12 01:49:01
【问题描述】:
我正在查看一些看起来像这样的 Flutter 代码:
try {
return Right(_doSomethingAndReturnSingleValue());
} on CustomException {
return Left(CustomException());
}
Left 和 Right 来自核心 either.dart 包,这是代码:
class Left<L, R> extends Either<L, R> {
final L _l;
const Left(this._l);
L get value => _l;
@override B fold<B>(B ifLeft(L l), B ifRight(R r)) => ifLeft(_l);
@override bool operator ==(other) => other is Left && other._l == _l;
@override int get hashCode => _l.hashCode;
}
class Right<L, R> extends Either<L, R> {
final R _r;
const Right(this._r);
R get value => _r;
@override B fold<B>(B ifLeft(L l), B ifRight(R r)) => ifRight(_r);
@override bool operator ==(other) => other is Right && other._r == _r;
@override int get hashCode => _r.hashCode;
}
我真的很难理解这个逻辑应该做什么。
谁能帮我理解 Left() 和 Right() 在 Dart 中的用途?
【问题讨论】: