Změna prvků

Prvek seznamu se chová jako proměnná: pomocí = mu můžete dát novou hodnotu. Vlevo napíšete název seznamu a index v hranatých závorkách, stejně jako když prvek čtete:

local zahony = {"mrkev", "brambory", "dýně"}
zahony[2] = "rajčata"
print(zahony[1], zahony[2], zahony[3])

Vypíše:

mrkev	rajčata	dýně

Druhý prvek je teď "rajčata" a původní "brambory" zmizely. Ostatní prvky zůstaly, jak byly. Čísla v seznamu se mění stejně. Lua nemá +=, takže prvek napíšete na obě strany:

local vejce = {4, 6, 5}
vejce[3] = vejce[3] + 2
print(vejce[3])

Vypíše:

7

Nepište == místo =. zahony[2] == "rajčata" je porovnání, ne příkaz, a na samostatném řádku skončí chybou syntax error near '=='.

Přidání prvku na konec. Místo hned za posledním prvkem má index #zahony + 1. Když tam přiřadíte hodnotu, seznam se o jeden prvek prodlouží:

local zahony = {"mrkev", "brambory"}
zahony[#zahony + 1] = "pšenice"
zahony[#zahony + 1] = "kukuřice"
print(#zahony, zahony[3], zahony[4])

Vypíše:

4	pšenice	kukuřice

Po prvním přiřazení má seznam tři prvky, takže druhé přiřazení uloží "kukuřice" na index 4. Takhle můžete naplnit i seznam, který začíná prázdný: local sklizen = {} a potom sklizen[#sklizen + 1] = …, kolikrát potřebujete.

Nenechávejte díry. Seznam má mít prvky na indexech 1, 2, 3… bez mezer. Když přiřadíte prvek dál než na #zahony + 1, nebo když prvek uprostřed nastavíte na nil, vznikne v seznamu díra a na # už se nedá spolehnout:

local plodiny = {"mrkev", "brambory", "dýně", "pšenice"}
plodiny[2] = nil
print(#plodiny)
local dalsi = {"mrkev", "brambory", "dýně"}
dalsi[5] = "kukuřice"
print(#dalsi)

Vypíše:

4
3

V prvním seznamu zůstaly jen tři plodiny, ale # tvrdí 4. Ve druhém jsou čtyři, ale # tvrdí 3: "kukuřice" vůbec nevidí. Když má seznam díru, # může počítat po díru, nebo i za ni, a Lua neslibuje, co z toho udělá. Proto přidávejte prvky jen na #t + 1 a odebírejte je tak, jak ukáže další cvičení.

Pokyny

Brambory jsou sklizené a Ema na jejich místo zasadila rajčata. Pod print změňte druhý prvek seznamu zahony na "rajčata".

Ema vykopala nový záhon pro pšenici. Přidejte "pšenice" na konec seznamu, na index #zahony + 1.

Na konci programu vypište počet záhonů, druhý záhon a poslední záhon, každý na samostatný řádek. Poslední získejte pomocí #zahony:

Záhony: 4
Druhý: rajčata
Poslední: pšenice

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/11