public static FSharpOption <T> Where <T>(this FSharpOption <T> option, Func <T, bool> predicate) { if (option.HasValue() && predicate(option.Value)) { return(option); } return(FSharpOption <T> .None); }
/// <summary> /// Converts this <see cref="FSharpOption{T}"/> to <see cref="Nullable{T}"/> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="value"></param> /// <returns></returns> public static T?ToNullable <T>(this FSharpOption <T> value) where T : struct { if (!value.HasValue()) { return(null); } return(value.Value); }
public static FSharpOption <R> Select <T, R>(this FSharpOption <T> option, Func <T, R> selector) { if (!option.HasValue()) { return(FSharpOption <R> .None); } return(selector(option.Value).ToOption()); }
public static Func <FSharpOption <T> > OrElse <T>(this FSharpOption <T> option, Func <FSharpOption <T> > alt) { return(() => { if (option.HasValue()) { return option; } return alt(); }); }