Větev else

Příkaz if provede svůj blok, jen když je podmínka pravdivá. Často ale chcete něco udělat i v případě, že pravdivá není. K tomu slouží else (anglicky „jinak“):

local pocasi = "zataženo"
if pocasi == "déšť" then
    print("Pole zalije déšť")
else
    print("Pole zalije Ema")
end

Vypíše:

Pole zalije Ema

Podmínka je nepravdivá, a tak program první blok přeskočí a provede blok za else. Těmto dvěma blokům se říká větve: jako když se cesta rozdvojí, program se vydá vždy právě jednou z nich. Nikdy neprovede obě a nikdy nepřeskočí obě.

else stojí na samostatném řádku, odsazené stejně jako jeho if, a celý příkaz pořád končí jediným end. else nemá podmínku ani then: připadnou mu všechny případy, které nepokryl if. Když mu podmínku přesto dáte, například else pocasi ~= "déšť" then, Lua ohlásí syntax error near '~='.

Větve často dávají hodnotu nějaké proměnné. Proměnnou vytvořte před příkazem if a ve větvích ji jen měňte:

local pocasi = "slunečno"
local kbeliky
if pocasi == "slunečno" then
    kbeliky = 12
else
    kbeliky = 4
end
print("Kbelíků vody: " .. kbeliky)

Vypíše:

Kbelíků vody: 12

local kbeliky bez hodnoty vytvoří proměnnou s hodnotou nil a jedna z větví do ní pak uloží číslo. Ve větvích už local nepište. Proměnná vytvořená pomocí local uvnitř bloku existuje jen do konce toho bloku:

local pocasi = "slunečno"
if pocasi == "slunečno" then
    local kbeliky = 12
end
print("Kbelíků vody: " .. kbeliky)
main.lua:5: attempt to concatenate a nil value (global 'kbeliky')

Za end už kbeliky z bloku neexistuje. Lua proto hledá globální proměnnou kbeliky, žádnou nenajde a dostane nil, stejně jako při překlepu v názvu.

Pokyny

Spusťte program: vypíše počasí a pak skončí chybou, protože když není slunečno, zůstane v kbeliky hodnota nil. Přidejte větev else, která nastaví kbeliky na 4. Program pak vypíše:

Počasí: déšť
Kbelíků vody: 4

Změňte pocasi na "slunečno" a spusťte program znovu. Teď je podmínka pravdivá, takže program půjde první větví a vypíše:

Počasí: slunečno
Kbelíků vody: 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í:

3/10