Lambda výraz je krátký zápis anonymní metody. Používá se všude tam, kde potřebujeme předat kus logiky jako parametr jiné metodě, aniž bychom museli definovat celou pojmenovanou funkci.
Základní syntaxe používá operátor deklarace lambdy `⇒`, který se čte jako „přechází na“ nebo „stává se“.
// Bez parametrů
() => Console.WriteLine("Ahoj!");
// Jeden parametr (závorky lze vynechat)
x => x * x;
// Více parametrů
(x, y) => x + y;
// S explicitním typem (pokud ho kompilátor nedokáže odvodit)
(int x, string s) => s.Length > x;
—
Lambda výrazy jsou nejčastěji přiřazovány do předdefinovaných delegátů v .NET:
// Func<vstup, návratový_typ>
Func<int, int> zdvojnasob = x => x * 2;
int vysledek = zdvojnasob(5); // 10
// Action<vstup>
Action<string> vypis = s => Console.WriteLine(s);
vypis("Lambda v akci");
—
Právě díky lambda výrazům je LINQ tak mocný a čitelný. Umožňují definovat podmínky filtrace nebo transformace přímo v metodě.
var cisla = new List<int> { 1, 2, 3, 4, 5, 6 };
// Lambda určuje podmínku (x musí být sudé)
var sude = cisla.Where(x => x % 2 == 0).ToList();
—
Lambda výraz má schopnost přistupovat k proměnným, které jsou definovány vně jejího vlastního těla (v okolním rozsahu platnosti).
int bonus = 10; Func<int, int> pripoctiBonus = x => x + bonus; Console.WriteLine(pripoctiBonus(5)); // Vypíše 15
—
| Výhoda | Popis |
|---|---|
| Stručnost | Redukuje množství „balastního“ kódu (boilreplate). |
| Čitelnost | Logika je definována přesně tam, kde se používá. |
| Flexibilita | Umožňuje snadné vytváření funkcí vyšších řádů. |
Související články:
Tagy: programming dot-net csharp lambda-expressions functional-programming