1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fuis-PatternMatchingExtension

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Расширение для pattern matching

Расширение методов для pattern matching в C#6

Пример

            "foo"
                .Match<int>(x => Console.WriteLine($"int {x}"))
                .Match<string>(x => Console.WriteLine($"string {x}"))
                .Match<object>(x => Console.WriteLine($"object {x}"))
                ;

            new { a = 1, b = 2 }
                .Match<string, int>((x1, x2) => Console.WriteLine($"<{string}, {int}> {x1} {x2}"))
                .Match<int, int>((x1, x2) => Console.WriteLine($"<{int}, {int}> {x1} {x2}"))
                ;

            var len = new Function<IList<int>, int>()
                .Match(list => list.IsEmpty(), self => list => 0)
                .Match(list => true, self => list => list.Match((x, xs) => self.Invoke(xs) + 1))
                .ToFunc()
                ;
            len(new List<int> { 1, 2, 3, 4, 5 }).Println();

            var fib = new Function<int, int>()
                  .Match(x => x == 0, self => x => 0)
                  .Match(x => x == 1, self => x => 1)
                  .Match(x => x > 1, self => x => self.Invoke(x - 1) + self.Invoke(x - 2))
                  .Match(_ => true, self => _ => { throw new ArgumentOutOfRangeException(nameof(_)); })
                  .ToFunc()
                  ;
            $"fib(10) = {fib(10)}".Println();

Обратите внимание, что в последнем примере синтаксис <string> и <int> был изменён на _ для корректного отображения в контексте C#.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Расширение для сопоставления с образцом в C#6. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fuis-PatternMatchingExtension.git
git@api.gitlife.ru:oschina-mirror/fuis-PatternMatchingExtension.git
oschina-mirror
fuis-PatternMatchingExtension
fuis-PatternMatchingExtension
master