Přiřazení a řídicí struktury v Lua

Obsah
V minulých tutoriálech jsme viděli, jak Lua umožňuje dynamické zpracování hodnot i typů a vždy vyniká svou jednoduchostí a univerzálností při provádění těchto operací.
Ale to není vše Lua nabízí z hlediska jednoduchosti, konvenčně podporuje deklarace, které můžeme najít v jazycích jako v C nebo PascalTam, kde tyto deklarace zahrnují přiřazení a řídicí struktury, můžeme dokonce narazit na některé nekonvenční způsoby, jako je více přiřazení a místní deklarace.
Úkoly v Lua Jsou extrémně jednoduché a pracují na změně hodnoty proměnné v určitém čase v našem programu, podívejme se na jednoduchý příklad pomocí interaktivní konzoly Lua, které můžeme zadat umístěním vyhrazeného slova Lua V terminálu:

Jak vidíme, máme několik jednoduchých příkladů přiřazení, které mění hodnotu proměnných operacemi zřetězení, aritmetickými nebo jednoduše zápisem hodnot. Kromě toho, Lua umožňuje vícenásobné přiřazení, kde je seznam hodnot přiřazen seznamu proměnných, vždy oddělující tyto seznamy čárkami pro správnou funkci:

Jak jsme mohli vidět var1 dostal číselnou hodnotu a var2 textová hodnota, to podle pořadí, ve kterém je přiřazení provedeno. Pokud jsme pozorovatelé, vidíme, jak můžeme také střídat hodnoty obou proměnných, což je užitečné při práci s funkcemi.
Lua můžete dokonce upravit počet hodnot pro počet přítomných proměnných, například pokud je seznam hodnot menší než seznam proměnných, další proměnné dostanou typ hodnoty nula ve výchozím nastavení jako jeho hodnoty, podívejme se na příklad tohoto procesu:

Jak vidíme, první dvě proměnné dostanou své odpovídající hodnoty a poslední z nich automaticky obdrží nula jak vysvětlujeme. Je důležité zmínit, že vícenásobná přiřazení nejsou vždy rychlejší než jednoduchá přiřazení, ale umožňují nám shromáždit více výnosů z volání funkce, abychom jmenovali alespoň některé.
Kromě globálních proměnných Lua Podporuje lokální proměnné, které mají na rozdíl od globálních omezený rozsah, který závisí na bloku, ve kterém byly deklarovány, podívejme se, jak deklarujeme lokální proměnnou:

Jak vidíme deklaraci těchto proměnných, děláme je s vyhrazeným slovem místníTyto proměnné fungují v bloku, ve kterém byly deklarovány, například můžeme říci, že blokem může být řídicí struktura nebo funkce, podívejme se na následující příklad:
 x = 10 lokálních i = 1 zatímco i <= x dělat lokální x = i * 2 tisk (x) i = i + 1 konec, pokud i> 20 pak lokální xx = 20 tisk (x + 2) jinak tisk (x) konec tisk (x) 
Pokud provedeme totéž v našem terminálu, uvidíme, jak výsledek nemusí být takový, jaký očekáváme, a to proto, že máme různé bloky, ve kterých používáme proměnné, podívejme se na výsledek:

Přestože ovládání našeho programu může být omezené, můžeme použít oddělovače do-end Chcete -li určit blok a vědět, jak dalece mají naše lokální proměnné rozsah, podívejme se na příklad, kde to můžeme udělat:
 do local var1 = 16 local var2 = var1 + 20 x = 5 y = x + var1 end - Zde končí rozsah tisku var1 a var2 (x, y) print (var1, var2)
Když to spustíme na našem terminálu, uvidíme, že proměnné xay jsou zobrazeny bez problémů, protože jsou globální, ale pro var1 a var2 jejich rozsah končí blokem do-end, uvidíme:

Můžeme zdůraznit, že používání lokálních proměnných v našich programech je dobrou praxí, pomáhají nám nedotýkat se globálního prostředí zbytečnými názvy, také to, že přístup k těmto proměnným je mnohem rychlejší, než kdybychom to udělali pomocí globálních proměnných a nakonec těchto proměnné zmizí, jakmile jejich rozsah skončí, čímž se uvolní místo v paměti, proto doporučujeme jejich použití, kdykoli je to možné.
Řídicí strukturyStejně jako ostatní programovací jazyky Lua nám poskytuje sadu řídicích struktur, které můžeme použít v našich programech, pomocí dobře známých -li zvládnout podmínky a zatímco, opakovat Y pro pro iterační smyčky, kde kromě opakovat který má explicitní terminátor až do a ostatní končí na konec.
Jako ve většině programovacích jazyků deklarace -li zkontroluje podmínku a provede část pak nebo část jiný, kde druhý může být volitelný, podívejme se na sadu těchto podmínek, jak je vidět v našich programech:
 pokud var1 <0 pak var1 = 0 konec, pokud var1 max. řádky, pak show () řádky = 0 konec
Zde máme tři typy operací, základní s pak, pomocí return k vrácení hodnoty podle podmínky a o něco úplnějšího kusu kódu, který volá funkci. Kromě toho můžeme psát -li vnořené pomocí jinak, což nás ušetří od používání více končí, pojďme se podívat, jak to vypadá:
 pokud operace == " +" pak výsledek = a + b elseif operace == " -" pak výsledek = a - b elseif operace == " *" pak výsledek = a * b elseif operace == "/" pak výsledek = a / b else chyba ("Neplatná operace") konec
Je důležité poznamenat, že to je nejen optimálnější, ale také nezbytné, protože Lua nemá deklarace typu přepínač takže tento typ vnořených podmínek bude v našich programech zcela běžný.
Stejně jako v jiných jazycích, Lua nejprve zhodnoťte stav zatímco, pokud je podmínka nepravdivá, smyčka končí a jinak jsou spuštěny následující řádky kódu a proces se opakuje, dokud není podmínka nepravdivá, podívejme se na jednoduchý příklad, který to ilustruje:
 lokální i = 1, zatímco var1 [i] tiskne (var1 [i]) i = i + 1 konec

Toto prohlášení na rozdíl od zatímco umožňuje nám opakovat kód uvnitř podmínky, dokud není pravdivý, kde i tento kód lze provést alespoň jednou, protože vyhodnocení podmínky se provádí na konci, podívejme se na příklad:
 opakujte řádek = os.read (), dokud řádek ~ = "" nevytiskne (řádek)

Pokud jde o iterační cykly pro, Lua má dvě varianty, pro číselné a generické pro. Podívejme se na syntaxi číslice pro:
 pro var = exp1, exp2, exp3 do konce
Tato smyčka spustí něco pro každou hodnotu var z exp1 až do exp2 použitím exp3 jako hodnotu pro zvýšení varu nebo jeho snížení, pokud ji nezahrneme Lua standardně předpokládá, že jde jeden po druhém, podívejme se na podrobnější příklad těchto cyklů:
 pro var = 1, f (x) do tisku (var) konec pro var2 = 10,1, -1 do tisku (var2) konec
Jak vidíme, jeho aplikace je poměrně jednoduchá a umožňuje nám implementovat užitečné iterační cykly do našich programů, podívejme se nyní na syntaxi generické pro:
 pro i, var v ipairs (pole) do print (var) end
Tento cyklus používá funkci, kterou nám poskytuje Lua volání dvojice, což je iterátor polí, kde pro každou iteraci i vezmu index, zatímco var získá hodnotu spojenou s tímto indexem.
Jak vidíme prohlášení uvnitř Lua Oni se příliš neliší od ostatních jazyků, nicméně jazyk dodává tu další jednoduchost, která nám dává mnohem rychlejší učení se jeho syntaxi a mnohem efektivnější použití. Tímto jsme dokončili tento tutoriál, kde jsme se naučili přiřazení a řídicí struktury uvnitř Lua, čímž se přidává další vrstva znalostí, pokud jde o tento jednoduchý, ale silný jazyk.
wave wave wave wave wave