Metody
7. Předání parametru
7.4. Metoda orientovaná na výraz
Těla některých metod mohou být velice jednoduchá, mohou např. provádět jeden úkol, vracet výsledky výpočtu, aniž by vyžadovaly jakoukoliv další logiku. C # podporuje zjednodušenou formu takových metod obsahující jeden výraz. Metoda orientovaná na výraz (anglicky „Expression-bodied Method“) může přijímat parametry a vracet hodnoty. Tento typ metod funguje stejně jako metody, které jsme dosud užívali, ale s tím rozdílem, že je užit operátor => který odkazuje na výraz, jenž je tělem metody a také chybí příkaz return používaný v předchozích metodách. Hodnota výrazu se používá jako návratová hodnota. Pokud metoda nevrací žádný výsledek, je typu void. Ve skutečnosti neexistuje žádný rozdíl mezi metodou orientovanou na výraz a deklarací běžné metody s tělem uzavřeným ve složených závorkách. Výhoda použití tohoto typu metody je pouze v jednoduchosti zápisu (nemusíme používat složené závorky, což usnadňuje čtení kódu). [8]
Ilustrativní příklad SectiHodnotyVyraz
Program SectiHodnotyVyraz
-
Popis: Příklad deklarace metody orientované na výraz se dvěma vstupními parametry a celočíselným výstupem
-
Zadání: Zkuste deklarovat metodu orientovanou na výraz nazvanou SectiHodnotyVyraz, která přijímá dva celočíselné parametry pojmenované x a y. Metoda navrátí součet obou parametrů. Hodnotu výstupu této metody uložte do lokální proměnné vysledek deklarované v metodě Main, kde také proběhne volání metody. Hodnoty parametrů: x = 7 a y = 5
- Řešení: Bude postupně probráno v následujícím textu
Následující příklad kódu ukazuje zjednodušenou verzi takové metody zapsané pomocí výrazu, která načítá dva celočíselné vstupní parametry a navrací jejich celočíselný součet – viz Kód 1.
/*Deklarace statické metody orientované na výraz s celočíselném výstupem a se dvěma vstupními parametry*/ static int SectiHodnotyVyraz(int x, int y) => x + y;
Kód 1: Příklad deklarace metody SectiHodnotyVyraz orientované na výraz se dvěma vstupními parametry a celočíselným výstupem
Volání metody SectiHodnotyVyraz orientované na výraz (viz Kód 1) ve statické metodě Main, které předáme dva vstupní parametry ve formě literálu a jejíž celočíselný výstup uložíme do proměnné výsledek, bychom provedli následujícím způsobem – viz Kód 2.
static void Main(string[] args) { //Deklarace lokální celočíselné proměnné int vysledek; //Zavolání metody orientované na výraz se 2 vstupními parametry a jedním celočíselným výstupem vysledek = SectiHodnotyVyraz(7, 5); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); }
Kód 2: Příklad zavolání metody SectiHodnotyVyraz orientované na výraz se dvěma vstupními parametry (použití literálů) a s návratem výsledku
Ilustrativní příklad ZobrazHodnotyVyraz
Program ZobrazHodnotyVyraz
-
Popis: Příklad deklarace metody orientované na výraz bez návratu výsledku s jedním vstupním parametrem
-
Zadání: Zkuste deklarovat metodu bez návratu (proceduru) orientovanou na výraz nazvanou ZobrazHodnotyVyraz, která přijímá celočíselný parametr pojmenovaný x. Metoda vypíše hodnotu tohoto parametru ve svém těle. V metodě Main zavolejte předchozí deklarovanou metodu SectiHodnotyVyraz (navrací součet obou parametrů – viz Ilustrativní příklad SectiHodnotyVyraz) s hodnotami parametrů: x = 7 a y = 5. Hodnotu výstupu této metody uložte do lokální proměnné vysledek. V metodě Main zavolejte ZobrazHodnotyVyraz a předejte jí hodnotu získaného výsledku
- Řešení: Bude postupně probráno v následujícím textu
Následující kód zobrazuje metodu orientovanou na výraz, která nenavrací žádný výsledek (datový typ návratu je tedy void). Tato metoda přijímá jeden vstupní parametr a pouze vypisuje hodnotu tohoto parametru – viz Kód 3.
//Deklarace statické metody bez výstupu orientované na výraz s 1 vstupním parametrem static void ZobrazHodnotyVyraz(int x) => Console.WriteLine("Hodnota x: {0}", x);
Kód 3: Příklad deklarace metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku s jedním vstupním parametrem
Ve statické metodě Main nyní zavolejme obě předchozí deklarované metody SectiHodnotyVyraz a ZobrazHodnotyVyraz – viz Kód 4.
static void Main(string[] args) { //Deklarace lokální celočíselné proměnné int vysledek; //Zavolání metody orientované na výraz se 2 vstupními parametry a jedním celočíselným výstupem vysledek = SectiHodnotyVyraz(7, 5); //Zavolání metody se vstupy ale bez výstupu ZobrazHodnotyVyraz(vysledek); //Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); }
Kód 4: Příklad zavolání metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku s jedním vstupním parametrem
Na základě výpisu v konzole vidíme, že vypsaná hodnota v metodě Main, odpovídá hodnotě součtu obou parametrů - viz Výstup programu - Kód 4.
Hodnota x: 12
Výstup programu - Kód 4: Ukázka výsledku metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku