Typy, hodnoty a výrazy v Lua

Obsah
Lua Je to dynamický jazyk, pokud jde o datové typy a jejich hodnoty, to znamená, že při vytváření proměnné a zadávání, že se jedná o řetězec, číslo nebo dokonce booleovskou hodnotu, neexistují žádné definice.
Výrazy jdou ruku v ruce s hodnotami, které nám umožňují provádět s nimi operace, které se mohou pohybovat od aritmetických, relačních a dokonce i podmíněných operací, které našim programům dodají dynamiku, ale než přejdeme k výrazům, podívejme se na typy hodnot, které vlastníme v Lua a jak fungují v jazyce.
v Lua Každá hodnota načte svůj vlastní typ, ve kterém můžeme najít osm různých typů: nula, logická hodnota, číslo, řetězec, uživatelská data, funkce, vlákno a tabulka, kde s funkcí typ () můžeme znát název typu dané hodnoty. Podívejme se na jednoduchý příklad jak Lua interpretovat to podle typ ():

Jak vidíme, typ je dán hodnotou, kterou načte, a určená funkce nám pomáhá vědět, co to je, vidíme, že i v posledním případě proměnné H je výsledkem řetězec, a to proto, že funkce typ () je vždy řetězec. Když jsme viděli, jak Lua interpretovat datové typy, podívejme se na každý z nich podrobně:
NulaJedná se o typ hodnoty, jejíž hlavní vlastnost se má lišit od ostatních hodnot. Jak jsme viděli v minulém kurzu, globální proměnná má ve výchozím nastavení hodnotu nula a pokud ji chceme eliminovat, přiřadíme tuto hodnotu, můžeme ji dokonce použít k reprezentaci absence užitečné hodnoty.
BooleanBooleovské hodnoty, stejně jako ve zbytku programovacích jazyků, mají dvě hodnoty, true a false, ale na rozdíl od jiných jazyků tento typ dat nemá celkovou doménu za podmínek, protože jakýkoli může představovat podmínku.
ČísloTento datový typ představuje celá čísla i desetinná místa. Lua nemá celočíselný typ hodnoty a nepotřebuje jej, protože Lua může představovat libovolné 32bitové celé číslo bez problémů se zaokrouhlováním, ale nejzajímavější na jazyku je, že jej můžeme zkompilovat tak, aby používal jiný typ, jako jsou dlouhá celá čísla nebo plováky, což je docela užitečné pro případy, kdy hardware nemá podpora desetinných míst.
TětivaStruny v Lua Jsou to posloupnost znaků, jsou to hodnoty, které jsou neměnné, to znamená, že nemůžeme změnit znak v řetězci. Zpracovává je automatická paměť jazyka jako ostatní objekty a přiřazení řetězce může být v uvozovkách.
StůlTyp dat tabulky implementuje asociativní pole, což je pole, které lze indexovat nejen čísly, ale řetězci nebo jakoukoli jinou hodnotou jazyka, kromě nuly. Tabulky nemají pevnou velikost, takže můžeme zahrnout tolik prvků, kolik chceme, a můžeme s nimi reprezentovat moduly, balíčky i objekty. Nakonec je jeho vytvoření stejně jednoduché jako použití závorek {} při inicializaci stolu.
FunkceFunkce v Lua mají docela zvláštní chování, můžeme je uložit do proměnných, předávat je jako argumenty jiným funkcím a vracet je i jako výsledky, kde Lua tyto funkce můžete volat jak v jazyce samotném, tak v jazyce C.
Uživatelská dataTyp dat uživatelská data umožňuje ukládat do proměnných Lua libovolné informace z C. Nemá žádné předdefinované operace Lua, s výjimkou testů přiřazení a rovnosti, kde hlavní funkcí tohoto typu je reprezentovat nové typy jako takové vytvořené aplikací nebo knihovnou napsanou v jazyce C.
Jak vidíme, typy se příliš neliší od toho, co můžeme najít v současných jazycích, ale jisté je, že jednoduchost, kterou musíme reprezentovat, je mnohem větší, pak se podívejme na roli výrazů a na to, jak je můžeme použít s našimi hodnotami.
Aritmetické operace jsou pro jakýkoli program nesmírně důležité a je důležité vědět, jak s nimi zacházet a jaká omezení mohou existovat v jazyce, který používáme. Lua podporuje konvenční operátory, na které jsme zvyklí: sčítání, odčítání, násobení, dělení, exponenciální, procentní a negační.
Podívejme se tedy na jednoduchý kód, kde předvádíme použití některých operátorů Lua:
 x = 8 + 5 y = 9-2 tisk (x * y% 0,01)
Ve výsledku operace násobení používáme sčítání, odčítání a dělení číslem 2, podívejme se, jak reakce tlumočníka při spuštění našeho kódu přes konzolu:

ZVĚTŠIT

Jak vidíme, Lua se příliš neliší od ostatních jazyků pro aritmetické operace, ale jeho jednoduchost pro psaní kódu usnadňuje vývoj programu.
Lua stejně jako jiné jazyky nám dává relační operátory, jako je větší než>, menší než <, menší nebo rovný =, stejný-rovný == a negace ~ =. Vidíme, že jediný, kdo se možná liší, je popření, ale poté, co si na to zvykneme, nebudou s jeho používáním žádné problémy.
Všechny tyto operátory mohou vracet true nebo false, kde můžeme dokonce použít operátor rovnosti i operátor negace na dvě hodnoty. Tato srovnání Lua dělá je na základě typu kromě dalších faktorů, podívejme se v následujícím kódu, kde je srovnání provedeno na základě stejného objektu:
 a = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = a
Pokud porovnáme totéž, výsledek operace nám dá, že a se rovná c, ale že a se liší od b, je to dáno skutečností, že jsou stejným objektem. Kromě toho musíme být velmi opatrní při porovnávání různých typů, protože například 6 se liší od „6“ a pokud děláme něco jako „3“ <„8“ Lua způsobí chybu, protože mícháme řetězce.
Logické operátory v Lua oni jsou a, nebo ne. Při porovnávání pomocí těchto operátorů bude vrácen první argument, pokud je nepravdivý, v opačném případě bude vrácen druhý. Podívejme se na řadu příkladů v interaktivní konzole, abychom předvedli výše uvedené.

ZVĚTŠIT

Chcete -li provést zřetězení v Lua je přes dvojtečku, trochu to mění syntaxi s ohledem na jiné jazyky, ale stejným způsobem je to docela jednoduché, ale Lua Vždy jde o kousek dál a pokud najde číslo a dojde k operaci zřetězení, převede jej na řetězec, podívejme se na dva jednoduché příklady této operace:

ZVĚTŠIT

Jak vidíme pro první případ, operace se provádí bez problémů a pro druhý případ máme čísla, Lua automaticky převede na řetězec. Je důležité si uvědomit, že řetězce jsou neměnné, takže tato operace vždy vytvoří nový řetězec bez provedení jakýchkoli úprav jeho operandu.
Nakonec máme konstruktory, což jsou výrazy, které nám umožňují vytvářet a inicializovat tabulky, tato funkce je jedinečná pro Lua a je to jeden z jeho nejvšestrannějších a nejsilnějších mechanismů. Můžeme použít prázdný konstruktor bez problémů pouze se závorkami {} což vytvoří prázdnou tabulku jako takovou. Ty mohou také inicializovat pole nebo seznamy, podívejme se na příklad:
 dny = {"neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota"}
Zde vytvoříme seznam se dny v týdnu a pokud chceme získat přístup k jeho prvkům zadáním stejného indexu, například pro získání čtvrtka by to bylo číslo indexu 5 nebo neděle by to bylo číslo 1, od té doby Lua Neinicializuje se na nulu jako ostatní jazyky, podívejme se, jak to vypadá, když to spustíme v naší konzole:

Můžeme také vytvořit vlastní asociativní pole typu klíčové hodnoty:
pole = {x = 26, y = 67}
Je však důležité, abychom za účelem přístupu k jeho hodnotám provedli odkaz na index pomocí dvojitých uvozovek, hodnotu získáme nulovou, naši operaci vidíme v interaktivní konzole:

Tímto končíme tutoriál, kde jsme to mohli vidět Lua rozšiřuje svou jednoduchost na všechny hrany, které ji tvoří, od dynamických typů, které zpracovává, jednoduchého způsobu přiřazování, manipulace s relačními a logickými operátory a také nám poskytuje extrémně užitečné nástroje, jako jsou zřetězení a konstruktory, zkušenost s jazykem co nejpříjemnější a nejpříjemnější.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave