Shrnutí
V této lekci jste se naučili, že:
- Funkce je pojmenovaný kus kódu, který napíšete jednou a spustíte, kolikrát potřebujete. Definujete ji pomocí
local function nazev() … enda zavoláte ji názvem a závorkami:nazev(). Funkce existuje až od řádku, kde je definovaná; dřívější volání skončí chybouattempt to call a nil value (global 'nazev'). - Parametr je název v definici, argument je hodnota ve volání:
local function zasad(plodina, pocet),zasad("mrkev", 12). Argumenty se do parametrů dosazují podle pořadí. Chybějící argument jenil, přebývající se ignorují. returnvrátí hodnotu na místo volání a funkci ukončí.printhodnotu jen ukáže; funkce bezreturndánil. Funkce, která něco počítá, má výsledek vrátit.return a, bvrátí několik hodnot:local krabicky, zbyva = zabalVejce(20). Volání dá všechny své hodnoty jen jako poslední položka seznamu.- Výchozí hodnota se doplní na začátku funkce:
balicky = balicky or 1. U parametru, který může býtfalse, testujteif x == nil then. - Lokální proměnná existuje od svého řádku do konce svého bloku a funkce vidí lokální proměnné vytvořené nad ní. Proměnná bez
localje globální: překlep potichu vytvoří novou a přepsat ji může kterákoli funkce. Proto je každá proměnná i funkcelocal. - Funkce je hodnota: můžete ji uložit do proměnné a předat jiné funkci, bez závorek.
function(x) … endbez názvu je anonymní funkce. table.sort(t, function(a, b) return a > b end)řadí podle vašeho pravidla: funkce vrátítrue, když máabýt předb, a pro stejné prvkyfalse. Prvky, které pravidlo považuje za stejné, můžou skončit v libovolném pořadí, takže když na tom záleží, přidejte druhé pravidlo.- Uzávěr je funkce, která si pamatuje lokální proměnné funkce, která ji vytvořila, třeba
pocetpočítadla. error("hláška")zastaví program smain.lua:N: hláška(error(hlaska, 0)bez pozice) aassert(podminka, hlaska)udělá totéž, když podmínka neplatí.pcall(f, …)chybu zachytí: vrátítruea výsledky, nebofalsea hlášku.
V příští lekci použijete tabulky novým způsobem: jako slovníky, které ukládají hodnoty pod názvy místo čísel, třeba kolik které plodiny je ve stodole.
Jak psát:
Pokyny
Teď si vše procvičte. Napište funkci soucetANejlepsi s parametrem seznam, která vrátí dvě hodnoty: součet seznamu a jeho největší číslo. Použijte ji pro trzby a pro seznam {5, 9, 3}. Program vypíše:
Celkem: 142, nejlepší: 48
Celkem: 17, nejlepší: 9Napište funkci sBonusem s parametry castka a procenta. Vrátí castka plus procenta procent z ní, zaokrouhleno dolů pomocí //: castka + castka * procenta // 100. Výchozí hodnota parametru procenta je 10. Vypište sBonusem(142) a sBonusem(142, 50). Program vypíše 156 a 213.
Seřaďte trzby od nejlepšího dne po nejhorší pomocí porovnávací funkce a vypište je spojené mezerami. Program vypíše 48 35 27 20 12.
Začněte programovat zdarma
11/11