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() … end a zavoláte ji názvem a závorkami: nazev(). Funkce existuje až od řádku, kde je definovaná; dřívější volání skončí chybou attempt 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 je nil, přebývající se ignorují.
  • return vrátí hodnotu na místo volání a funkci ukončí. print hodnotu jen ukáže; funkce bez return dá nil. Funkce, která něco počítá, má výsledek vrátit.
  • return a, b vrá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ýt false, testujte if 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 local je globální: překlep potichu vytvoří novou a přepsat ji může kterákoli funkce. Proto je každá proměnná i funkce local.
  • Funkce je hodnota: můžete ji uložit do proměnné a předat jiné funkci, bez závorek. function(x) … end bez 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á a být před b, a pro stejné prvky false. 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 pocet počítadla.
  • error("hláška") zastaví program s main.lua:N: hláška (error(hlaska, 0) bez pozice) a assert(podminka, hlaska) udělá totéž, když podmínka neplatí. pcall(f, …) chybu zachytí: vrátí true a výsledky, nebo false a 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.

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ší: 9

Napiš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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

11/11