Думаю, в вашем случае это своего рода проводная реализация. Вопрос в том, что вы хотите делать с реальной реализацией? Вы хотите заменить if else
, который будет появляться снова и снова? В таком случае, что бы вы сделали, если бы вам пришлось обработать ошибку (сбой)? Я думаю, что лучше использовать функции в качестве параметров. Вот короткое предложение.
class Either<T, F> {
T value;
F fail;
Either(this.value, this.fail);
void check(success(T value), {failure(F fail)}) {
if (fail != null && failure != null) {
failure(fail);
} else if (value != null) {
success(value);
}
}
}
class SomeClass {
void checkTheImplementation() {
Either<String, Error> maybeString = Either("testing", null);
// if you don't want to handle the error.
maybeString.check((value) => print(value));
// if you want to handle the error
maybeString.check((value) => print(value), failure: (err) {
print(err.toString());
});
}
}