mapOrElse<U> method
Maps this Option<T>
to an Option<U>
using the given mapFn
function with
the held value if this Option
is Some. Otherwise returns the result of
orFn
as Some(orFn())
.
orFn
will only be evaluated if this Option
is None.
Option<int> a = Some(1);
Option<int> b = None();
print(a.mapOrElse(() => 5, (val) => val + 1).unwrap()); // prints: 2
print(b.mapOrElse(() => 5, (val) => val + 1).unwrap()); // prints: 5
Note: Unlike Rust's
Option::map_or_else(),
this method returns an Option
value. Given that Option.map() returns
the mapped Option
it just made sense for this method to do the same.
See also:
Rust: Option::map_or_else()
Implementation
Option<U> mapOrElse<U>(U Function() orFn, U Function(T) mapFn) => switch (this) {
Some(value: T value) => Some(mapFn(value)),
None() => Some(orFn())
};