mapOr<U> method
Maps a Result<T, E>
to a Result<U, E>
using the given function with the
held value if the Result<T, E>
is Ok. Otherwise returns the provided
orValue
as Ok(orValue)
.
Values passed for orValue
are eagerly evaluated. Consider using Result.mapOrElse()
to provide a default that will not be evaluated unless the Result
is Ok.
Result<int, String> a = Ok(1);
Result<int, String> b = Err('foo');
print(a.mapOr(5, (val) => val + 1).unwrap()); // prints: 2
print(b.mapOr(5, (val) => val + 1).unwrap()); // prints: 5
Note: Unlike Rust's
Result.map_or(),
this method returns a Result
value. Given that Result.map() returns
the mapped Result
it just made sense for this method to do the same.
See also:
Rust: Result::map_or()
Implementation
Result<U, E> mapOr<U>(U orValue, U Function(T) mapFn) => switch (this) {
Ok(:T v) => Ok(mapFn(v)),
Err() => Ok(orValue)
};