Technologieaustausch

Erste Schritte mit Lua (2) – Datentypen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Vorwort

Auf diesen Artikel wird verwiesen von:Lua-Datentypen |. Anfänger-Tutorial (runoob.com)

Wenn Sie mehr wissen möchten, klicken Sie bitte auf den Link oben:

acht Grundtypen

Typ – Funktion zum Anzeigen des Datentyps:

Testprogramm:

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

Wirkungsdemonstration

Sie können sehen, dass der Typ (Y), den wir hier ausgeben, ein Nulltyp ist. Warum? Die nächste Null (leer) wird Ihnen angezeigt.

Null (leer)

Der Typ nil stellt einen Typ dar, der keinen gültigen Wert hat. Er hat nur einen Wert – nil. Wenn Sie beispielsweise eine Variable ohne Zuweisung ausgeben, wird ein Nullwert ausgegeben.

Nicht initialisierter Variablentyp – Null

Wie folgt: Die Ausgabetypen der drei Variablen, denen kein Anfangswert zugewiesen wurde, sind alle Null.

nil löscht Schlüssel-Wert-Paare in der Tabelle

Testprogramm

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

Operationsergebnis

Bei globalen Variablen und Tabellen hat Null auch eine „Löschwirkung“. Das Zuweisen eines Nullwerts zu globalen Variablen oder Variablen in der Tabelle ist gleichbedeutend mit dem Löschen.

Null sollte mit doppelten Anführungszeichen verglichen werden.

type(X)==nil ergibtFALSCHDer Grund dafür ist, dass Typ(X) im Wesentlichen die zurückgegebene Zeichenfolge „nil“ ist, bei der es sich um einen Zeichenfolgentyp handelt:

Boolescher Wert

Der boolesche Typ hat nur zwei optionale Werte: true (wahr) und false (falsch). Lua behandelt false und nil als false, und alles andere ist wahr.

Testprogramm

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

Wirkungsdemonstration

Nummer


Lua hat standardmäßig nur einen Zahlentyp – den Typ double (doppelte Genauigkeit) (der Standardtyp kann in luaconf.h geändert werden). Die folgenden Schreibmethoden werden als Zahl betrachtet

string(string)

„“ '' – stellt eine Zeichenfolge dar


[[ ]] – stellt eine Zeichenfolge dar
 

Zahlen können in Zeichenfolgen umgewandelt werden

Beim Durchführen arithmetischer Operationen an einer numerischen Zeichenfolge versucht Lua, die numerische Zeichenfolge in eine Zahl umzuwandeln:

Verwenden Sie .., um Zeichenfolgen zu verketten

 

Tisch

In Lua erfolgt die Tabellenerstellung durch „konstruktive Ausdrücke“. Der einfachste konstruierte Ausdruck ist {}, der zum Erstellen einer leeren Tabelle verwendet wird. Sie können der Tabelle auch einige Daten hinzufügen und die Tabelle direkt initialisieren:

Initialisierungstabelle

Tabelle basierend auf Index (Schlüssel) ändern

Ein Tisch in Lua ist eigentlich ein„Assoziatives Array“(assoziative Arrays), der Index des Arrays kann eine Zahl oder eine Zeichenfolge sein.

Luas Indizes beginnen bei 1 (statt)

Die Tabelle hat keine feste Länge. Wenn neue Daten hinzugefügt werden, wächst die Länge der Tabelle automatisch.

Funktion

In Lua werden Funktionen als „First-Class Values“ betrachtet.

Funktionen können in Variablen gespeichert werden:

Lambda-Ausdruck (anonyme Funktion), der Parameter übergibt


Faden


In Lua ist der wichtigste Thread die Coroutine. Es ähnelt einem Thread und verfügt über einen eigenen unabhängigen Stapel, lokale Variablen und einen Befehlszeiger.
Globale Variablen und die meisten anderen Dinge können mit anderen Coroutinen geteilt werden.

Der Unterschied zwischen Threads und Coroutinen: Threads können mehrmals gleichzeitig ausgeführt werden, Coroutinen können jedoch jeweils nur einen ausführen, und eine laufende Coroutine wird nur dann angehalten, wenn sie angehalten wird.

Benutzerdaten (benutzerdefinierter Typ)


Benutzerdaten sind benutzerdefinierte Daten, die zur Darstellung eines Typs verwendet werden, der von einer Anwendung oder einer C/C++-Sprachbibliothek erstellt wurde.
Sie können beliebige Daten eines beliebigen C/C++-Datentyps (normalerweise Struktur und Zeiger) in einer Lua-Variablen speichern und aufrufen