Das beste Lua-Datentypen-Tutorial im Jahr 2024. In diesem Tutorial können Sie Null (leer),boolean (Boolean),Nummer (Digital),string (string),Tabelle (Tabelle),Funktion (Funktion),Thread (Thread),Userdaten (custom-Typ), lernen
Lua ist eine dynamisch typisierte Sprache, Variablen, Typdefinitionen müssen nicht nur Variablen Werte zuweisen. Werte können in Variablen als Parameter übergeben oder liefern die Ergebnisse gespeichert werden.
Lua hat acht Grundtypen sind: nil, boolean, Zahl, eine Zeichenfolge, Userdaten, Funktion, Gewinde und Tisch.
Datentypen | Beschreibung |
---|---|
Null | Die einfachste, nur der Wert Null gehören zu dieser Klasse einen ungültigen Wert (entspricht falsch in bedingten Ausdrücken) darstellt. |
boolean | Es enthält zwei Werte: wahr und falsch. |
Anzahl | Es stellt die Art von doppelter Genauigkeit Gleitkommazahlen Echt |
Schnur | String durch ein Paar von doppelten oder einfachen Anführungszeichen darstellen |
Funktion | Oder durch die C-Funktion in Lua geschrieben |
Benutzerdaten | C steht für eine beliebige Strukturdaten in einer Variablen gespeichert |
Gewinde | Dass die Umsetzung einer separaten Zeile für die Durchführung von Kooperationsprogrammen |
Tabelle | Lua Tabellen (Tabelle) ist eigentlich ein "assoziatives Array" (assoziative Arrays), der Index des Arrays kann eine Zahl oder eine Zeichenfolge sein. In Lua wird die Tabelle durch die "Expressionskonstrukt" erstellt die einfachste Expressionskonstrukt zur Vervollständigung {} verwendet wird, eine leere Tabelle zu erstellen. |
Wir können den Typ Funktion verwenden, um die Art einer bestimmten Variablen oder Wert zu testen:
print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> string
nil hat keine Art einen gültigen Wert gibt an, es nur ein Wert ist - Null, wie eine variable Zuordnung Druck nicht, es wird ein Null-Wert-Ausgang:
> print(type(a)) nil >
Für globale Variablen und Tabelle, null und "Löschen" Aktion, auf die globale Variablentabelle oder Tabelle Variable einen Nullwert zugewiesen, das entspricht, sie zu löschen, führen Sie den folgenden Code zu kennen:
tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1) do print(k de " - " de v) end tab1.key1 = nil for k, v in pairs(tab1) do print(k de " - " de v) end
boolean Typ hat nur zwei mögliche Werte: true (wahr) und false (false), Lua auf false und nil als "falsch", der andere "true":
print(type(true)) print(type(false)) print(type(nil)) if false or nil then print("至少有一个是 true") else print("false 和 nil 都为 false!") end
Der obige Code wird wie folgt ausgeführt:
$ lua test.lua boolean boolean nil false 和 nil 都为 false!
Lua Standard ist nur eine Nummer Typ - double (double precision) Typ (der Standardtyp kann in luaconf.h Definition geändert werden), wird die folgende Formulierung zu sein Nummerntyp gesehen:
print(type(2)) print(type(2.2)) print(type(0.2)) print(type(2e+1)) print(type(0.2e-1)) print(type(7.8263692594256e-06))
Ausführung einer Instanz »
Ergebnisse des obigen Code:
number number number number number number
String durch ein Paar von doppelten oder einfachen Anführungszeichen zu vertreten.
string1 = "this is string1" string2 = 'this is string2'
Sie können auch zwei Klammern "[[]]" bedeutet "ein" string verwenden.
html = [[ <html> <head></head> <body> <a href="/">w3cschool本教程</a> </body> </html> ]] print(html)
Die folgenden Codeausführung Ergebnisse:
<html> <head></head> <body> <a href="/">w3cschool本教程</a> </body> </html>
Wenn ein numerischer String arithmetische Operationen auszuführen, wird Lua versuchen, diese Zahl in eine Reihe von Zahlen zu drehen:
> print("2" + 6) 8.0 > print("2" + "6") 8.0 > print("2 + 6") 2 + 6 > print("-2e2" * "6") -1200.0 > print("error" + 1) stdin:1: attempt to perform arithmetic on a string value stack traceback: stdin:1: in main chunk [C]: in ? >
Der obige Code "Fehler" + 1-Ausführungsfehler, der String-Verkettung mit de, wie zum Beispiel:
> print("a" de 'b') ab > print(157 de 428) 157428 >
Verwenden Sie #, um die Länge der Saite, die Saite auf der Vorderseite, folgende Beispiele zu berechnen:
> len = "www.w3cschool.cc" > print(#len) 16 > print(#"www.w3cschool.cc") 16 >
In Lua wird die Tabelle durch die "Expressionskonstrukt" erstellt die einfachste Expressionskonstrukt zur Vervollständigung {} verwendet wird, eine leere Tabelle zu erstellen. Sie können auch einige Daten in der Tabelle, direkte Initialisierung Tabelle hinzufügen:
-- 创建一个空的 table local tbl1 = {} -- 直接初始表 local tbl2 = {"apple", "pear", "orange", "grape"}
Lua Tabellen (Tabelle) ist eigentlich ein "assoziatives Array" (assoziative Arrays), der Index des Arrays kann eine Zahl oder eine Zeichenfolge sein.
-- table_test.lua 脚本文件 a = {} a["key"] = "value" key = 10 a[key] = 22 a[key] = a[key] + 11 for k, v in pairs(a) do print(k de " : " de v) end
Skriptausführung Ergebnisse:
$ lua table_test.lua key : value 10 : 33
Im Gegensatz zu anderen Sprachen des Arrays als ein Array von anfänglichen Index 0, der anfängliche Standard Index in der Tabelle in Lua im Allgemeinen 1.
-- table_test2.lua 脚本文件 local tbl = {"apple", "pear", "orange", "grape"} for key, val in pairs(tbl) do print("Key", key) end
Skriptausführung Ergebnisse:
$ lua table_test2.lua Key 1 Key 2 Key 3 Key 4
Tischgröße Länge nicht festgelegt ist, gibt es eine automatische Erhöhung der Länge der Tabelle neue Daten hinzufügen, ist die Original-Tabelle nicht gleich Null.
-- table_test3.lua 脚本文件 a3 = {} for i = 1, 10 do a3[i] = i end a3["key"] = "val" print(a3["key"]) print(a3["none"])
Skriptausführung Ergebnisse:
$ lua table_test3.lua val nil
In Lua wird die Funktion "First-Class-Werte (First-Class-Wert)" betrachtet, kann es variable Funktion sein:
-- function_test.lua 脚本文件 function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) factorial2 = factorial1 print(factorial2(5))
Skriptausführung Ergebnisse:
$ lua function_test.lua 120 120
Funktion kann durch Parameterübergabe anonyme Funktion (anonyme Funktion) sein:
-- function_test2.lua 脚本文件 function anonymous(tab, fun) for k, v in pairs(tab) do print(fun(k, v)) end end tab = { key1 = "val1", key2 = "val2" } anonymous(tab, function(key, val) return key de " = " de val end)
Skriptausführung Ergebnisse:
$ lua function_test2.lua key1 = val1 key2 = val2
In Lua ist der Hauptthread ein gemeinsames Programm (Koroutine). Es ist mit Gewinde (Thread) fast einen eigenen Stapel, lokale Variablen und Befehlszeiger hat, können Sie globale Variablen und die meisten anderen Sachen mit anderen Kooperationsprogrammen teilen.
Themen-Unterschied mit Koroutinen: mehrere Threads gleichzeitig ausführen, und Koroutine kann nur eine jederzeit laufen und laufen Koroutine nur hängen (Suspend) nur dann, wenn pausiert.
Userdata ist ein benutzerdefinierter Datentyp durch die Anwendung bedeutet, dass ein oder C / C ++ Bibliothek können beliebige C / C ++ Daten von einem beliebigen Datentyp erstellt werden (in der Regel eine Struktur und Zeiger) in Lua gespeichert Anrufvariable.