Exemplo n.º 1
0
        public static Optional <TValue> Find <TKey, TValue>(this IDictionary <TKey, TValue> dictionary, TKey key)
        {
            if (dictionary.TryGetValue(key, out var value))
            {
                return(Optional.Some(value));
            }

            return(Optional.None <TValue>());
        }
Exemplo n.º 2
0
        public static Optional <U> Apply <T, U>(this Optional <T> optional, Optional <Func <T, U> > applier)
        {
            if (optional.HasValue && applier.HasValue)
            {
                return(Optional.Some(applier.Value(optional.Value)));
            }

            return(Optional.None <U>());
        }
Exemplo n.º 3
0
        public static Optional <TKey> FindKey <TKey, TValue>(this IDictionary <TKey, TValue> dictionary, Func <TKey, TValue, bool> predicate)
        {
            foreach (var kvp in dictionary)
            {
                if (predicate(kvp.Key, kvp.Value))
                {
                    return(Optional.Some(kvp.Key));
                }
            }

            return(Optional.None <TKey>());
        }
Exemplo n.º 4
0
        public static Optional <T> FindValue <T>(this IList <T> list, Func <T, bool> predicate)
        {
            foreach (var item in list)
            {
                if (predicate(item))
                {
                    return(Optional.Some(item));
                }
            }

            return(Optional.None <T>());
        }
Exemplo n.º 5
0
        public static Optional <U> Pick <TKey, TValue, U>(this IDictionary <TKey, TValue> dictionary, Func <TKey, TValue, Optional <U> > picker)
        {
            foreach (var kvp in dictionary)
            {
                var pickResult = picker(kvp.Key, kvp.Value);
                if (pickResult.HasValue)
                {
                    return(pickResult);
                }
            }

            return(Optional.None <U>());
        }
Exemplo n.º 6
0
        public static Optional <U> Pick <T, U>(this IList <T> list, Func <T, Optional <U> > picker)
        {
            foreach (var item in list)
            {
                var pickResult = picker(item);
                if (pickResult.HasValue)
                {
                    return(pickResult);
                }
            }

            return(Optional.None <U>());
        }
Exemplo n.º 7
0
 public static Optional <T> Filter <T>(this Optional <T> optional, Predicate <T> filter)
 {
     return(optional.FlatMap(t => filter(t) ? Optional.Some(t) : Optional.None <T>()));
 }
Exemplo n.º 8
0
 public static Optional <U> FlatMap <T, U>(this Optional <T> optional, Func <T, Optional <U> > mapper)
 {
     return(optional.HasValue ? mapper(optional.Value) : Optional.None <U>());
 }