nil: žádná hodnota
Někdy proměnná žádnou hodnotu nemá. Lua na to má zvláštní hodnotu nil, která znamená „nic“. Proměnná, kterou vytvoříte bez = a hodnoty, obsahuje nil:
local jahody
print(jahody)
print("Jahody:", jahody)Vypíše:
nil
Jahody: nilnil se hodí pro věci, které ještě nejsou známé nebo které chybí. Můžete ho do proměnné uložit i sami, jahody = nil, když už v ní nemá nic být. Počítat s nil ale nejde a nejde ho ani připojit k textu:
local mince
print("Mince: " .. mince)Lua ohlásí:
main.lua:2: attempt to concatenate a nil value (local 'mince')Hlášku čtěte od konce. (local 'mince') je proměnná: lokální, jménem mince. a nil value je hodnota, kterou obsahovala, tedy nil. A attempt to concatenate je to, o co se Lua pokusila: připojit ji k textu (concatenate znamená spojit). U +, - a dalších operátorů hláška zní attempt to perform arithmetic on a nil value (local 'mince'), tedy pokus o výpočet.
Nejčastějším zdrojem nil je překlep v názvu:
local mince = 120
print(mnice)Vypíše:
nilŽádná chyba! Lua nenašla lokální proměnnou mnice, a tak hledala globální. Ani ta neexistuje a proměnná, která neexistuje, má hodnotu nil. print ji bez reptání vypíše. Chyba přijde, až když program s hodnotou něco dělá:
local mince = 120
print("Mince: " .. mnice)Lua ohlásí:
main.lua:2: attempt to concatenate a nil value (global 'mnice')Slovo v závorce vám napoví:
local: název je správně, ale proměnná ještě nemá hodnotu. Hledejte řádek, kde ji měla dostat.global: všechny své proměnné máte lokální, takže tahle nejspíš neexistuje. Hledejte překlep nebo špatné velké písmeno:Minceje jiný název nežmince.
Jak psát:
Pokyny
Spusťte program a přečtěte si chybovou hlášku. Slepice dnes snesly 12 vajec: opravte řádek, který vytváří proměnnou vejce, aby program vypsal:
Slepice: 4
Vejce: 12Přidejte na konec programu tento řádek i s překlepem a program spusťte:
print("Mléko: " .. mlkeo .. " litrů")Přečtěte si hlášku. Pak název opravte, aby program vypsal i mléko, které dala kráva Bella:
Slepice: 4
Vejce: 12
Mléko: 6 litrůEma ještě neví, kolik natrhá jahod. Pod to vytvořte proměnnou jahody bez hodnoty a vypište ji za text "Jahody:", oddělenou čárkou. Na rozdíl od .. si čárka s nil poradí:
Slepice: 4
Vejce: 12
Mléko: 6 litrů
Jahody: nilZačněte programovat zdarma
6/10