it:sw:lambda_expressions
Obsah
Lambda výrazy v C#
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.
1. Syntaxe lambda výrazu
Základní syntaxe používá operátor deklarace lambdy `⇒`, který se čte jako „přechází na“ nebo „stává se“.
- (parametry) ⇒ výraz / blok kódu
Příklady zápisu:
// 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;
—
2. Lambda a delegáty
Lambda výrazy jsou nejčastěji přiřazovány do předdefinovaných delegátů v .NET:
- Action: Pro metody, které nevracejí žádnou hodnotu (void).
- Func: Pro metody, které vracejí hodnotu. Poslední typ v definici je vždy návratový typ.
- Predicate: Speciální případ pro metody vracející `bool`.
// 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");
—
3. Využití v LINQ
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();
—
4. Uzávěry (Closures)
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
—
5. Proč používat lambdy?
| 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
it/sw/lambda_expressions.txt · Poslední úprava: autor: admin
