orElse<F> method
Calls op
if the result is error, otherwise returns the ok value of class`.
This function can be used for control flow based on result values.
Example
Basic Usage:
import 'package:dartsult/dartsult.dart';
main() {
Result<int, int> sq(int x) {
return Result.ok(x * x);
}
Result<int, int> err(int x) {
return Result.error(x);
}
assert(Result.ok<int, int>(2).orElse(sq).orElse(sq) == Result.ok<int, int>(2));
assert(Result.ok<int, int>(2).orElse(err).orElse(sq) == Result.ok<int, int>(2));
assert(Result.error<int, int>(3).orElse(sq).orElse(err) == Result.ok<int, int>(9));
assert(Result.error<int, int>(3).orElse(err).orElse(err) == Result.error<int, int>(3));
}
Implementation
Result<T, F> orElse<F>(Result<T, F> Function(E err) op) {
if (_ok.val != null) {
return Result.ok(_ok.val!);
}
return op(_error.val!);
}