Читать книгу Programowanie funkcyjne w języku C#. Jak pisać lepszy kod - Enrico Buonanno - Страница 14

1.1.1 Funkcje jako elementy pierwszoklasowe

Оглавление

W języku, w którym funkcje są elementami pierwszoklasowymi, możemy używać ich jako parametrów wejściowych lub wartości zwracanych do innych funkcji. Możemy przypisywać je zmiennym i trzymać je w kolekcjach. Innymi słowy, jesteśmy w stanie wykonywać na funkcjach wszystkie działania, które można wykonywać z dowolnego innego typu.

Napiszmy na przykład w REPL następujący kod1:

Func<int, int> triple = x => x * 3;

var range = Enumerable.Range(1, 3);

var triples = range.Select(triple);

triples // => [3, 6, 9]

W tym przykładzie zaczynamy od deklaracji funkcji, która zwraca potrojoną wartość danej liczby całkowitej i przypisuje ją zmiennej o nazwie triple. Potem używamy Range w celu utworzenia IEnumerable<int> z wartościami [1, 2, 3]. Następnie wywołujemy Select (metodę rozszerzającą dla IEnumerable), podając jej jako argumenty zakres oraz funkcję triple. Tworzy to nową kolekcję IEnumerable zawierającą elementy otrzymane przez zastosowanie funkcji triple na każdym elemencie z wejściowego zakresu.

Ten krótki fragment pokazuje, że funkcje w języku C# są w istocie elementami pierwszoklasowymi, gdyż możemy przypisać funkcję mnożenia przez 3 do zmiennej triple, przekazując ją jako argument do metody Select. W całej książce zobaczymy, że traktowanie funkcji jak wartości pozwala nam pisać mocny i zwięzły kod.

Programowanie funkcyjne w języku C#. Jak pisać lepszy kod

Подняться наверх