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")
endVypíše:
Pole zalije EmaPodmí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: 12local 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.
Jak psát:
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: 4Změň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: 12Začněte programovat zdarma
3/10