Rodzaje, wartości i wyrażenia w Lua

Spisie treści
Lua Jest to język dynamiczny, jeśli chodzi o typy danych i ich wartości, to znaczy nie ma definicji żadnego typu podczas tworzenia zmiennej i określania, że ​​jest to ciąg, liczba, a nawet Boolean.
Wyrażenia idą w parze z wartościami, które pozwalają nam wykonywać na nich operacje, które mogą obejmować operacje arytmetyczne, relacyjne, a nawet warunkowe, aby nadać dynamikę naszym programom, ale zanim przejdziemy do wyrażeń, zobaczmy rodzaje wartości, które posiadamy w Lua i jak działają w języku.
w Lua Każda wartość ładuje swój własny typ, w którym możemy znaleźć osiem różnych typów: zero, wartość logiczna, liczba, ciąg, dane użytkownika, funkcja, wątek i tabela, gdzie z funkcją rodzaj () możemy poznać nazwę typu danej wartości. Zobaczmy prosty przykład tego, jak Lua zinterpretuj to zgodnie z rodzaj ():

Jak widzimy, typ jest określony przez wartość, którą ładuje, a wyznaczona funkcja pomaga nam wiedzieć, co to jest, widzimy, że nawet w ostatnim przypadku zmiennej H wynikiem jest string, a to dlatego, że funkcja rodzaj () jest zawsze ciągiem. Odkąd zobaczyliśmy jak Lua interpretować typy danych, przyjrzyjmy się szczegółowo każdemu z nich:
ZeroJest to typ wartości, którego główną właściwością ma być różna od innych wartości. Jak widzieliśmy w poprzednim samouczku, zmienna globalna ma domyślnie wartość zero a jeśli chcemy go wyeliminować, przypisujemy tę wartość, możemy nawet użyć jej do reprezentowania braku wartości użytecznej.
Boole'aWartości logiczne, podobnie jak w pozostałych językach programowania, mają dwie wartości, prawda i fałsz, ale w przeciwieństwie do innych języków, ten typ danych nie ma całkowitej domeny nad warunkami, ponieważ dowolna może reprezentować warunek.
NumerTen typ danych reprezentuje zarówno liczby całkowite, jak i dziesiętne. Lua nie ma typu wartości całkowitej i nie potrzebuje jej, ponieważ Lua może reprezentować dowolną 32-bitową liczbę całkowitą bez problemów z zaokrąglaniem, ale najciekawszą rzeczą w języku jest to, że możemy go skompilować do użycia innego typu, takiego jak długie liczby całkowite lub zmiennoprzecinkowe, co jest całkiem przydatne w przypadkach, gdy sprzęt nie ma obsługa ułamków dziesiętnych.
StrunowyStruny w Lua Są ciągiem znaków, są wartościami niezmiennymi, czyli nie możemy zmienić znaku w ciągu. Są one obsługiwane przez automatyczną pamięć języka, podobnie jak reszta obiektów, a przypisanie ciągu może odbywać się za pomocą podwójnych lub pojedynczych cudzysłowów.
StółTyp danych table implementuje tablicę asocjacyjną, która jest tablicą, która może być indeksowana nie tylko liczbami, ale także łańcuchami lub dowolną inną wartością językową, z wyjątkiem nil. Tabele nie mają ustalonego rozmiaru, więc możemy zawierać tyle elementów, ile chcemy, a za ich pomocą możemy zarówno reprezentować moduły, pakiety, jak i obiekty. Wreszcie, jego stworzenie jest tak proste, jak użycie nawiasów {} przy inicjalizacji tabeli.
CechyFunkcje w Lua zachowują się dość osobliwie, możemy je zapisywać w zmiennych, przekazywać jako argumenty do innych funkcji i zwracać nawet jako wyniki, gdzie Lua możesz wywołać te funkcje napisane zarówno w samym języku, jak i w C.
Dane użytkownikaRodzaj danych dane użytkownika pozwala przechowywać w zmiennych z Lua dowolne informacje z C. Nie ma predefiniowanych operacji na Lua, z wyjątkiem testów przypisania i równości, gdzie główną funkcją tego typu jest reprezentowanie nowych typów jako takich utworzonych przez aplikację lub bibliotekę napisaną w C.
Jak widać typy nie różnią się zbytnio od tego, co możemy znaleźć w obecnych językach, ale pewne jest to, że prostota, jaką mamy do ich przedstawienia, jest znacznie większa, wtedy zobaczmy rolę wyrażeń i jak możemy ich używać z naszymi wartościami.
Operacje arytmetyczne są niezwykle ważne dla każdego programu i ważne jest, aby wiedzieć, jak je obsługiwać i jakie ograniczenia mogą istnieć w używanym przez nas języku. Lua obsługuje konwencjonalne operatory, do których jesteśmy przyzwyczajeni: dodawanie, odejmowanie, mnożenie, dzielenie, wykładnictwo, procent i negację.
Zobaczmy więc prosty kod, w którym zademonstrujemy użycie niektórych operatorów Lua:
 x = 8 + 5 y = 9 - 2 drukuj (x * y% 0,01)
Używamy dodawania, odejmowania i dzielenia przez 2 na wyniku operacji mnożenia, zobaczmy jak zareaguje interpreter, gdy uruchamiamy nasz kod przez konsolę:

POWIĘKSZAĆ

Jak widać, Lua nie różni się zbytnio od pozostałych języków do operacji arytmetycznych, ale jej prostota w pisaniu kodu sprawia, że ​​jest dość łatwa w obsłudze przy tworzeniu programu.
Lua podobnie jak inne języki, daje nam operatory relacyjne, takie jak większe niż>, mniejsze niż <, mniejsze lub równe =, równe równe == i negacja ~ =. Widzimy, że jedyną, która może się różnić, jest odmowa, ale po przyzwyczajeniu się do niej nie będzie problemów z jej użyciem.
Wszystkie te operatory mogą zwrócić prawdę lub fałsz, przy czym możemy nawet zastosować zarówno operator równości, jak i operator negacji do dwóch wartości. Te porównania Lua robi je na podstawie typu oprócz innych czynników, zobaczmy w poniższym kodzie, gdzie porównanie jest dokonywane na podstawie tego samego obiektu:
 a = {}; ax = 1; a.y = 0 b = {}; bx = 1; b.y = 0 c = a
Jeśli porównamy to samo, wynik operacji daje nam, że a jest równe c, ale że a jest różne od b, wynika to z faktu, że są tym samym obiektem. Dodatkowo musimy być bardzo ostrożni przy porównywaniu różnych typów, ponieważ na przykład 6 jest różne od "6" i jeśli zrobimy coś takiego jak "3" <"8" Lua spowoduje to błąd, ponieważ mieszamy struny.
Operatory logiczne w Lua są i, lub i nie. Gdy dokonujemy porównania przy użyciu tych operatorów, pierwszy argument zostanie zwrócony, jeśli jest fałszywy, w przeciwnym razie zostanie zwrócony drugi. Zobaczmy serię przykładów w interaktywnej konsoli, aby zademonstrować powyższe.

POWIĘKSZAĆ

Aby wykonać konkatenację w Lua jest przez dwukropek, zmienia nieco składnię w stosunku do innych języków, ale w ten sam sposób jest dość prosty, ale Lua Zawsze idzie trochę dalej i jeśli znajdzie liczbę i jest operacja konkatenacji, konwertuje ją na łańcuch, zobaczmy dwa proste przykłady tej operacji:

POWIĘKSZAĆ

Jak widzimy w pierwszym przypadku operacja przebiega bez problemu, a w drugim przypadku mamy liczby, Lua automatycznie konwertuje je na ciąg. Ważne jest, aby pamiętać, że łańcuchy są niezmienne, więc ta operacja zawsze tworzy nowy łańcuch bez dokonywania jakichkolwiek modyfikacji jego operandu.
Wreszcie mamy konstruktory, które są wyrażeniami, które pozwalają nam tworzyć i inicjować tabele, ta funkcja jest unikalna dla Lua i jest to jeden z najbardziej wszechstronnych i potężnych mechanizmów. Możemy bez problemu użyć pustego konstruktora z samymi nawiasami {} co stworzy pustą tabelę jako taką. Mogą one również inicjować tablice lub listy, zobaczmy przykład:
 dni = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"}
Tutaj tworzymy listę z dniami tygodnia i jeśli chcemy uzyskać dostęp do jej elementów podając indeks tego samego, który mamy, na przykład aby uzyskać czwartek byłby to indeks 5 lub niedziela byłby to numer 1, od Lua Nie inicjalizuje się do zera jak pozostałe języki, zobaczmy, jak to wygląda, gdy uruchomimy go w naszej konsoli:

Możemy również tworzyć własne tablice asocjacyjne typu klucz-wartość:
tablica = {x = 26, y = 67}
Ważne jest jednak, że aby uzyskać dostęp do jego wartości zrobimy odwołanie do indeksu z podwójnymi cudzysłowami, uzyskamy wartość nil, widzimy naszą operację w interaktywnej konsoli:

Na tym kończymy samouczek, w którym mogliśmy to zobaczyć Lua rozszerza swoją prostotę na wszystkie krawędzie, które ją tworzą, począwszy od typów dynamicznych, które obsługuje, prosty sposób na przypisanie, obsługę operatorów relacyjnych i logicznych, a także dostarcza nam niezwykle przydatnych narzędzi, takich jak konkatenacje i konstruktory do tworzenia naszych doświadczenie z językiem tak przyjemne i przyjemne, jak to tylko możliwe.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave