static Opt<User> GetOptionalUser() {
// method that tries to get the user, which can be omitted.
...
}
static Opt<string> GetNickname(User user) {
// method that tries to get the nickname of the passed-in user; which is optional
...
}
Opt<string> nickname = GetOptionalUser().FlatMap(GetNickname);
// equivalent to both below:
nickname = GetOptionalUser().FlatMap(user => GetNickname(user));
nickname = GetOptionalUser().Map(user => GetNickname(user) /*Opt<Opt<string>>*/).Flatten();
public Task<Opt<TOut>> FlatMap<TOut>(
Func<T, Task<Opt<TOut>>> map
)
[Missing <typeparam name="TOut"/> documentation for "M:Orx.Fun.Option.Opt`1.FlatMap``1(System.Func{`0,System.Threading.Tasks.Task{Orx.Fun.Option.Opt{``0}}})"]