LUA - programovací jazyk / LUA - programming language |
2 | ||
1.1. Poznámky Do svého kódu si můžeš psát poznámky, které nic neovlivňují, je to pouhý text, který ti může připomenout, že chceš doprogramovat tohle tam a tohle funguje takhle. Vše,co napíšeš za dvě pomlčky, je poznámka, například: Code Lua 1 --já jsem poznámka Poznámky je také možné psát na více řádků, pokud napíšeš dvě pomlčky a text napíšeš do dvou hranatých závorek, takhle: Code Lua 1 2 3 --[[já jsem 1.2. Proměnné Lua má 3 základní typy hodnot. Číslo, string a boolean. • Číslo je jakákoliv číselná hodnota včetně záporných a necelých čísel. Desetinná čárka se vždy píše jako tečka. Takže za číslo se považuje například: 100, 0, -6, 0.8, 0.9454, -6, ... • String je jakýkoliv text. Texty se píšou do " uvozovek. Za text se tedy považuje například: "ahoj", "jak se máš?", "Vítej, cestovateli, musíš být unavený, odpočiň si u táboráku...", ... • Boolean je velice jednoduchá hodnota, protože má pouze 2 podoby. Buď je pravda nebo nepravda. K čemu přesně je boolean dobrý si vysvětlíme později. Za boolean se tedy považuje: true, false. Proměnnou v kódu vytvoříme tak, že napíšeme libovolný název pro naši proměnnou, rovná se a nakonec hodnotu, které chceme, aby se proměnná rovnala. Tady jsou příklady vytvoření všech třech typů proměnných: Code Lua 1 2 3 4 5 x = 0.5 --já jsem číslo Pozor, do názvů proměnných se nikdy nepíše diakritika. Pokud chceš mít víceslovný název proměnné, tak slova neodděluj mezerou, ale podtržítkem. Například x_hodnota = 600 Proměnná se může rovnat i jiné proměnné: Code Lua 1 2 3 x = 10 --mám hodnotu 10 Hodnotu proměnné můžeš jednoduše změnit tím, že proměnné přiřadíš novou hodnotu: Code Lua 1 2 3 x = 10 --mám hodnotu 10 Dokonce můžeš měnit i typ hodnoty: Code Lua 1 2 3 4 5 x = 1 --teď jsem číslo 1.3. print() Print ti vypíše hodnotu do zprávy v #lua chatu, je to úžasný nástroj na testování nejrůznějších věcí a my ho budeme v hojném počtu využívat. Konečně se dostáváme k prvnímu programování! Slavnostně si můžeš přímo v TFM poprve otevřít Lua konzoli příkazem /lua. Pokud se nic neotevřelo, podívej se znovu úplně na vrch tohoto topicu, jak se spouští Lua. Jako první si vytiskneme string "hello world!". Je to takový rituál pro nováčka, který tímto zdraví nový neprobádaný svět programování! Do konzole tedy napiš tohle a stiskni Potvrdit: Code Lua 1 print("hello world!") Pokud máš vše správně, otevře se ti chat #lua a uvidíš svou první vytisklou zprávu , gratuluji! :D 1. Mám pro tebe první úkol! Vytiskni tři hodnoty: "Já jsem programátor", -6, false. (Odpovědi si vždy někam zapisuj a potom zkontroluj s řešením. Vždy pokračuj dál ve čtení tutorialu až jakmile splníš úkol. Pokud si úkol splnil špatně, prohlédni si zadání a řešení, pokračuj, jakmile pochopíš, co máš proč špatně.) c: 1. řešení Code Lua 1 2 3 print("Já jsem programátor") Print dokáže vytisknout i proměnné, například: Code Lua 1 2 3 x = -150 1.4. Operace s čísly Přejdeme do jednoduché matematiky. Lua umí 4 základní operace: • plus + • mínus - • násobení * • dělení / Operace je velice jednoduché použít, například: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x = 10 Stejně jako v matematice, i v Lua můžeš využívat závorky například pro upřednostnění sčítání před násobením. Code Lua 1 2 3 4 5 x = 10 2. Je tu druhý úkol! V kódu jsou tři proměnné x, y a z. V printech doplň proměnné místo otazníků tak, aby každý print vytiskl číslo, které je napsané v poznámce za printem. Code Lua 1 2 3 4 5 6 7 8 9 x = 2 2. řešení Code Lua 1 2 3 4 5 6 7 8 9 x = 2 1.5. Logické operátory I když jsem říkal, že boolean je velice jednoduchá hodnota, zatajil jsem, že se v ní skrývá něco zajímavého, do čeho se právě ponoříme. Jak jsem říkal, boolean může být buď pravda nebo nepravda. Ovšem pravda a nepravda jde díky logickým operátorům získat různými způsoby. Vysvětlíme si, co každý logický operátor dělá a jak se zapisuje: • and - logická spojka a, píše se ve tvaru boolean and boolean. Oba booleany musí být true, aby byl výsledek true, v každém jiném případě dostaneme false. • or - logická spojka nebo, píše se ve tvaru boolean or boolean. Jeden z booleanů musí být true, aby byl i výsledek true. Takže pouze pokud budou oba booleany false, výsledek bude false. • not - logická spojka ne, píše se ve tvaru not boolean. Neguje boolean, to znamená, že true změní na false a false zmení na true. Tady je pár příkladů přímo v kódu: Code Lua 1 2 3 4 5 6 7 8 print(true and true) --vytiskne true, protože všechny booleany jsou true Logické operátory and a or je možné řetězit na libovolný počet booleanů. Tady je pár příkladů: Code Lua 1 2 3 4 5 print(true and true and true and true) --vytiskne true, protože všechny booleany jsou true Stejně jako má násobení a dělení přednost před sčítáním a odčítáním, and má přednost před or; not má přednost před and i or. Code Lua 1 2 print(false or false and true or true) --vytiskne true Ovšem opět je možné využít závorky, aby jsme upřednostnili operace, které chceme aby se staly jako první, stejně jako když napíšeme u operací 9 * (4 + 4), můžeme napsat například (boolean or boolean) and (boolean or boolean). Tady je příklad, jak mohou závorky změnit výsledek přímo v kódu: Code Lua 1 2 print(false or false and true or true) --vytiskne true A ano, tyhle hodnoty je možné zadat do proměnné stejně jako všechny ostatní hodnoty: Code Lua 1 2 3 x = false or false and true or true 3. Ve třetím úkolu tu máš nekolik printů s booleany a logickými operátory. Uhádni u každého printu, jestli vytiskne true nebo false. Code Lua 1 2 3 4 5 6 7 8 9 10 11 print(false and false) 3. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 print(false and false) --vytiskne false 1.6. Srovnávací operátory ==, ~=, <, >, <= a >= Aby toho nebylo málo, máme tu další důležité operátory, které nám také jako výsledek dají boolean. Všechny se píšou ve tvaru hodnota operátor hodnota. Naštěstí jsou jednoduché na pochopení: • == (rovná se) - Pokud jsou hodnoty stejné, výsledek je true, pokud jsou jiné, výsledek je false. • ~= (nerovná se) - Pokud jsou hodnoty jiné, výsledek je true, pokud jsou stejné, výsledek je false. Je to opak == operátoru. • < (je menší) - Srovnává dvě čísla. Pokud je první číslo menší než druhé, výsledek je true. V jiném případě je výsledek false. • > (je větší) - Srovnává dvě čísla. Pokud je první číslo větší než druhé, výsledek je true. V jiném případě je výsledek false. • <= (je menší nebo rovno) - Srovnává dvě čísla. Pokud je první číslo menší nebo rovno druhému, výsledek je true. V jiném případě je výsledek false. • >= (je větší nebo rovno) - Srovnává dvě čísla. Pokud je první číslo větší nebo rovno druhému, výsledek je true. V jiném případě je výsledek false. Lua je v operátorech == a ~= hodná a nehodí chybu, i když srovnáváme dva úplně jiné typy hodnot. Tady je pár příkladů, jak se tyto operátory využívají: Code Lua 1 2 3 4 5 6 7 print(1 == 1) --vytiskne true Opět je možné tyhle hodnoty zadat do proměnné stejně jako všechny ostatní hodnoty: Code Lua 1 2 3 x = 9 ~= "zdarec" 4. Tentokrát tu máš několik printů s hodnotami a srovnávacími operátory. Uhádni u každého printu, jestli vytiskne true nebo false. Code Lua 1 2 3 4 5 6 7 8 9 10 x = 2 4. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 x = 2 Teď spojíme srovnávací operátory s logickými operátory and, or a not, protože se využívají společně a brzy si řekneme kde. Srovnávací operátory se vyhodnotí jako první, až potom se vyhodnocují logické operátory. Tady je pár příkladů přímo v kódu: Code Lua 1 2 3 4 5 6 7 8 9 x = 5 5. Tohle bude poslední test, jestli rozumíš logickým i srovnávacím operátorům. Uhádni u každého printu, jestli vytiskne true nebo false. Code Lua 1 2 3 4 5 6 7 8 9 10 x = 2 5. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 x = 2 1.7. IF prohlášení Konečně se dostáváme do něčeho, co vypadá jako pořádné programování! :D Využijeme tu pořádně naše logické a srovnávací operátory. If prohlášení je takzvané podmíněné vykonání příkazu. Ukážeme si, jak se zapisuje v kódu. Začneme jednoduše. Na začátek napíšeme slovíčko if, za něj nějaký boolean a nakonec slovíčko then. Vznikne nám if boolean then. Například if x > 9 then. Potom stiskneme 2x enter a napíšeme end. Tím si prohlášení uzavřeme a vše, co napíšeme mezi řádky s if a end se stane pouze, pokud boolean za if bude true. Ukážeme si to názorně v kódu: Code Lua 1 2 3 4 5 x = 10 V tomto případě kód vytiskne x je menší než 100, protože hodnota x na začátku je opravdu menší než 100. Můžeš vidět, že jsem print odsadil od kraje tabem. Odsazení tabem se používá pro lepší čitelnost kódu. K if můžeme dále využít komponent v podobě elseif boolean then. Napojuje se vždy pod if a můžeme jich pod sebou napsat kolik chceme. Pokud první if není pravda, vyzkouší se elseif pod ním. Pokud ani to není pravda, vyzkouší se další elseif pod ním a tak dále. Code Lua 1 2 3 4 5 6 7 8 9 10 11 x = 10 V tomto případě kód vytiskne x je větší než 5. protože elseif x > 5 then je jako první pravda. Všechny ostatní elseif se už ani nezkontrolují a přejde se rovnou k end. Poslední slovíčko, které můžeme k if přidat je else. Napojuje se vždy až jako poslední, můžeme napsat pouze jedno a nepíše se k němu boolean ani slovo then. Pokud není if ani žádné elseif pravda, spustí se else. Code Lua 1 2 3 4 5 6 7 8 9 10 11 x = 10 Kód vytiskne x není 3 ani 7 ani 15, protože žádné z prohlášení není pravda. 6. Máš tu kód s několika if prohlášeními. Urči u každého prohlášení, jaké číslo vytiskne. Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 x = -3 6. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 x = -3 7. Dostaneš první opravdu programovací úkol. V kódu je hodnota x, za kterou můžeš dosadit libovolné číslo. Napiš takovou if strukturu, která vytiskne, jestli je x záporné číslo, kladné číslo nebo 0. Klidně si kód můžeš několikrát spustit s různými x hodnotami pro ověření, jestli ho máš naprogramovaný správně. Code Lua 1 2 3 x = 254 7. řešení Code Lua 1 2 3 4 5 6 7 8 9 x = 254 Nebo Code Lua 1 2 3 4 5 6 7 8 9 x = 254 Vyzkoušíme si do if prohlášení přidat i logické operátory, tady je příklad přímo v kódu: Code Lua 1 2 3 4 5 6 7 x = 7 8. V kódu jsou hodnoty x a y. Za x můžeš dosadit libovolné číslo a za y libovolný boolean. Napiš takovou if strukturu, která vytiskne boolean true, pokud je x rovno 1 nebo 150 nebo 2000 a zároveň y je true. V jiném případě se vytiskne boolean false. Využij i logické operátory. Klidně si kód můžeš několikrát spustit s různými x a y hodnotami pro ověření, jestli ho máš naprogramovaný správně. Code Lua 1 2 3 4 x = 2000 8. řešení Code Lua 1 2 3 4 5 6 7 8 x = 2000 Nebo Code Lua 1 2 3 4 5 6 7 8 9 10 x = 2000 9. Úkoly už začínají být obtížnější. V kódu jsou hodnoty x a y, za které můžeš dosadit libovolná čísla. Napiš takovou if strukturu, která vytiskne string "x je podobné y", pokud je x nejvíce o 10 menší nebo větší, něž y. Pokud to nebude pravda, vytiskne string "x není podobné y". Využij i logické operátory. Klidně si kód můžeš několikrát spustit s různými x a y hodnotami pro ověření, jestli ho máš naprogramovaný správně. Code Lua 1 2 3 4 x = 50 9. řešení Code Lua 1 2 3 4 5 6 7 8 x = 50 Nebo například i jinak upravené rovnice Code Lua 1 2 3 4 5 6 7 8 x = 50 If se může vnořit do dalšího If: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 x = 5 10. V kódu jsou dvě if struktury. U obou urči, jaké číslo vytiskne. Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 x = 10 10. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 x = 10 11. Dám ti úkol, podle kterého se pozná, jestli opravdu rozumíš všemu, co jsme si zatím řekli. V kódu máš tři proměnné. Dvě čísla s názvy x a y a jeden string s názvem operace. Čísla mohou být libovolná a string může být jedna ze čtyř hodnot "plus", "mínus", "krát", "děleno". Naprogramuj jednoduchou kalkulačku pro hodnoty x a y, která vytiskne jejich součet, rozdíl, násobek nebo podíl podle toho, jakou string hodnotu bude mít operace. Code Lua 1 2 3 4 5 x = 10 11. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 x = 10 1.8. Hodnota nil Když jsem poprve vysvětloval hodnoty, zatajil jsem, že v Lua existují další dva základní typy hodnot, aby toho nebylo na začátek tolik. Na první z nich se podíváme právě teď. Typ hodnoty nil má jen jedinou podobu a znamená prázdnou hodnotu. Používá se například, pokud chceme vytvořit proměnnou, která zatím nemá žádnou hodnotu, ale dá se s ní pracovat jako se všemi ostatními proměnnými. Code Lua 1 x = nil --já jsem nil 1.9. Table Table je druhý typ hodnoty, který jsem na začátku záměrně nezmínil, protože tenhle je nejsložitější. Table je velice speciální hodnota, protože v sobě dokáže ukládat jakékoliv další hodnoty. Ukážeme si, jak se vytvoří proměnná s hodnotou table: Code Lua 1 2 3 x = {} --já jsem prázdný table Na hodnoty tablu se dostaneme pomocí indexů. Index v Lua začíná od 1. Například, pokud máme y = {2, 10, 100}, číslo 2 je na indexu 1, číslo 10 na indexu 2 a číslo 100 na indexu 3. Pokud budeme chtít ve zmíněném tablu dostat hodnotu na určitém indexu, napíšeme název tablu a za něj do hranatých závorek index. Například y[2] má hodnotu 10. Ukážeme si to názorně v kódu: Code Lua 1 2 3 4 5 6 7 x = {5, 10, 15, 20, 25, 30} Pokud se pokusíme získat hodnotu na indexu, který v tablu není, například index 10 z tablu x = {5, 10, 15, 20, 25, 30}, dostaneme hodnotu nil. Code Lua 1 2 3 x = {5, 10, 15, 20, 25, 30} Další důvod, proč jsou tably tak úžasné je, že v sobě dokážou ukládat opravdu jakýkoliv typ hodnoty. To znamená, že v sobě dokážou uložit i další tably. Tím se dostáváme do vícedimenzionálních tablů. Pokud máme table, kderý má v sobě další table, nazývá se dvoudimenzionální table. Pokud zajdeme do větších extrémů a budeme mít table, který má v sobě další tably a ty v sobě mají další tably, nazývá se trojdimenzionální. Stejným způsobem mohou být čtyřdimenzionální, pětidimenzionální a tak dále. Vytvoříme si jednoduchý dvoudimenzionální a trojdimenzionální table a názorně si ukážeme, jak se dostat na všechny jejich hodnoty: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 x = {10, "ahoj", nil, true, {}} --do tablu jde vložit jakýkoliv typ hodnoty Už trojdimenzionální tably dokážou být velice matoucí. Proto doporučuji nepřehledné vícedimenzionální tably zapisovat mnohem srozumitelněji na více řádků: Code Lua 1 2 3 4 5 6 7 y = { Pro ještě větší srozumitelnost můžeme v kódu i znázornit jednodlivé indexy. To už záleží na samotném programátorovi, jestli se rozhodne indexy rozepisovat nebo ne. Mně osobně se to někdy vyplatí a někdy ne. Zápis ukážu na tablech z posledních dvou kódů a nechám i printy pro srovnání, o kolik je jednodušší přečíst takhle rozepsané tably: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 y = { 12. V kódu máš několik vícedimenzionálních tablů. Každý rozepiš na více řádků do srozumitelnější podoby. Code Lua 1 2 3 4 a = {{1, 2, 3, 4, 5, 6}, {10, 20, 30, 40, 50, 60}} 12. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 a = { 13. V kódu máš několik vícedimenzionálních tablů. Urči u každého printu, co vytiskne. Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x = {{3, 6, 9, 12}, {4, 8, 12, 16}, {5, 10, 15, 20}} 13. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x = {{3, 6, 9, 12}, {4, 8, 12, 16}, {5, 10, 15, 20}} Výborně, teď už víme, jak se orientovat v tablech a indexech. Teď si ukážeme způsob, jak můžeme do tablu přidávat další hodnoty nebo z tablu mazat hodnoty. K tomu slouží dvě funkce. Do teď jsme znali pouze funkci print(hodnota), tak teď si do našeho repertoáru přidáme další. table.insert(table, index, hodnota) - Přidá do tablu novou hodnotu. Do funkce zadáváme tři věci: • table - název tablu, do kterého chceme přidat hodnotu • index - index, na který chceme v tablu přidat hodnotu • hodnota - nějaká hodnota, kterou chceme přidat. Není nutné zadávat index. Funkci můžeme použít i takhle: table.insert(table, hodnota). V tomto případě se hodnota dá na konec tablu. table.remove(table, index) - Smaže z tablu určitou hodnotu. Do funkce musíme zadat dvě věci: • table - název tablu, ze kterého chceme smazat hodnotu. • index - index, ze kterého chceme smazat hodnotu. Opět není nutné zadávat index. Funkci můžeme použít i takhle: table.remove(table). V tomto případě se smaže poslední hodnota. Tady je několik příkladů, jak funkce použít: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x = {5, 2, 3} Pokud budeme mít například table x = {1, 2} a na 7. index dáme číslo 4, tedy použijeme table.insert(x, 7, 4), můžeme si představit, že všechny indexy, mezi 2. indexem a 7. indexem, do kterých jsme nezadali žádné číslo, mají hodnotu nil. Takže výsledek bude x = {1, 2, nil, nil, nil, nil, 4}. Code Lua 1 2 3 x = {1, 2} 14. V kódu máš table x s čísly. Použij funkce table.insert() a table.remove() k uspořádání tablu tak, aby jeho finální podoba vypadala takhle x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Pokus se využít co nejméně table.insert() a table.remove() funkcí. Vytisknutím tablu pomocí print(x) na konci kódu si můžeš zkontrolovat, jestli máš úkol splněný správně. Code Lua 1 2 3 4 5 x = {-9, 4, 0.5, 3, 4, 100, 5, 6, "ahoj", 9} 14. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 x = {-9, 0.5, 3, 4, 100, 5, 6, "ahoj", 9} Druhý způsob, jak můžeme v tablu manipulovat s hodnotami je přímo přepisování v podobě x[2] = 6. Tohle nám změní na druhém indexu v tablu x hodnotu na 6. Ukážeme si pár příkladů přímo v kódu: Code Lua 1 2 3 4 5 6 7 x = {3, 6, 9, 12} 15. Mám pro tebe ještě jeden podobný úkol. V kódu máš opět table x s čísly. Tentokrát změň hodnoty stylem x[index] = hodnota k uspořádání tablu tak, aby jeho finální podoba vypadala takhle x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Pokus se změnit co nejméně hodnot. Vytisknutím tablu pomocí print(x) na konci kódu si můžeš zkontrolovat, jestli máš úkol splněný správně. Code Lua 1 2 3 4 5 x = {-9, 0.5, 3, 4, 100, 6, "ahoj", 9} 15. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 x = {-9, 0.5, 3, 4, 100, 6, "ahoj", 9} Velice užitečný je také operátor #, který nám dá délku tablu. Píše se ve tvaru #table. Pozor, pokud je v tablu uložený nil, může způsobit zvláštní chování # operátoru, proto nedoporučuji používat #, pokud v tablu ukládáš nil. Ukážeme si příklady použití # přímo v kódu: Code Lua 1 2 3 4 5 6 7 8 x = {10, 20, 30, 40} Index je první způsob, jak můžeme ukládat hodnoty do tablu a následně se v nich navigovat. Druhý způsob je klíč. V Lua je, oproti jiným programovacím jazykům, velmi malý rozdíl mezi tím, co je index a co klíč a to dokáže být matoucí. Proto si teď přesně definujeme, co budeme považovat za index a co za klíč. • Index může být pouze celé číslo větší než 0. Například 1, 2, 10, 5000, 5413215, ... • Klíč může být jakákoliv hodnota, která se nepovažuje za index. Jediný nil se nemůže použít jako klíč. I tak silně doporučuji jako klíč využívat pouze string, aby jste se vyznali v tom, co děláte. Například "ahoj", "age", "key_one", ... Ukážeme si, jak table s klíči vypadá na tablu jménem pes: Code Lua 1 2 3 4 5 6 7 8 9 pes = { Pro klíče neexistuje něco jako table.insert() a table.remove(), vše se dělá přímo přiřazením hodnoty. Pokud chceme do výše vytvořeného tablu pes přidat třeba rychlost, uděláme to takhle pes["rychlost"] = 30. Ukážu i příklad přímo v kódu: Code Lua 1 2 3 4 5 6 7 8 pes = { Pokud z tablu chceme smazat hodnotu s klíčem, dáme ji rovno nil. například pes["vek"] = nil. Opět ukážu příklad přímo v kódu: Code Lua 1 2 3 4 5 6 7 8 pes = { Je možné mít table, kde jsou zároveň indexy i klíče: Code Lua 1 x = {1, 10, ["velikost"] = 500, ["vzdalenost"] = 300} V takovém případě bych doporučil lepší zápis kvůli jednodušší čitelnosti kódu: Code Lua 1 2 3 4 5 6 x = { Pozor, operátor # ignoruje klíče, takže pokud bude mít table 2 indexy a 3 klíče, jeho velikost bude 2. Žádný strach, jak zjistit velikost tablu i s klíči si ukážeme níže v tutorialu. Code Lua 1 2 3 4 5 6 7 8 9 x = { Klíče je možné zapisovat dvěma různými způsoby. Já mám ve většině případů raději druhý styl zápisu, který vám teď ukážu: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 pes = { Nezáleží na tom jakým stylem klíče zapíšeš. Například i když vytvoříš hodnotu pes["rychlost"] = 3 a vytiskneš ji jako print(pes.rychlost), vše bude fungovat bez problémů, ale kvůli jednodušší čitelnosti doporučuji využívat jednotně takový styl, ve kterém si klíč vytvoříš. Code Lua 1 2 3 4 5 6 7 8 9 10 pes = { 16. Mám pro tebe poslední úkol v této sekci s tably. Na začátku kódu je velký table se seznamem křečků podle jmen a každý křeček má své statistiky. Dole v kódu je několik prázdných printů a u každého je komentář s požadavkem, co má vytisknout. Místo otazníku zapiš do každého printu takovou proměnnou, aby print vytiskl požadovanou hodnotu z tablu s křečky. Například, pokud budu chtít hlad Pauly, odpověď bude seznam_krecku["Paula"].hlad Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 seznam_krecku = { 16. řešení Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 seznam_krecku = { Pozor, operátor == a ~= nepozná, jaký je obsah tablu, takže například print({1, 2, 3} == {1, 2, 3}) vytiskne false. Code Lua 1 2 3 4 5 6 7 8 9 x = {1, 2, 3} Pozor, v TFM, funkce print tiskne špatně vícedimenzionální tably. Pokud budeme chtít vytisknout table x = {1, 2, {3, 4}}, dostaneme: Přitom správně vytisknutý table x = {1, 2, {3, 4}} by měl vypadat takhle: Code Lua 1 2 3 4 5 6 7 8 x = { Dernière modification le 1730901480000 |