Έχουν δημοσιευτεί Σάββατο, 10 Απριλίου 2010 12:56 μμ από το μέλος PALLADIN

Pattern matching in C# (The Scheme way)

Με αφορμή αυτό το thread, και επειδή ο ξεχασμένος Scheme hacker που κρύβω μέσα μου επαναστάτησε... 
σκέφτηκα να συνδυάσω old time classic Scheme hacking και modern C# style API.

public static class PatternMatch
{
    public static Func<Func<TValue, TResult>, Func<TValue, TResult>> With<TValue, TResult>(Func<TValue, bool> condition, Func<TValue, TResult> action)
    {
        return With(value => value, condition, action);
    }
    public static Func<Func<TValue, TResult>, Func<TValue, TResult>> With<TValue, TResult>(this Func<Func<TValue, TResult>, Func<TValue, TResult>> withFunc, Func<TValue, bool> condition, Func<TValue, TResult> action)
    {
        return continuation => withFunc(value => condition(value) ? action(value) : continuation(value));
    }
    public static Func<TValue, TResult> Else<TValue, TResult>(this Func<Func<TValue, TResult>, Func<TValue, TResult>> withFunc, Func<TValue, TResult> elseFunc)
    {
        return withFunc(elseFunc);
    }
}

Example:
var pattern = PatternMatch.With<int, string>(value => value == 1, value => "One ")
                              .With(value => value == 2, value => "Two ")
                              .With(value => value == 3, value => "Three ")
                              .Else(_ => "Else");

Console.WriteLine(pattern(1));
Καλό Σάββατο σε όλους μας.
Share


Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

Χωρίς Σχόλια

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
προαιρετικό
απαιτούμενο
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image