Latest web development tutorials

Lua-Datentypen

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

Null (leer)

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 .. " - " .. v)
end
 
tab1.key1 = nil
for k, v in pairs(tab1) do
    print(k .. " - " .. v)
end

boolean (Boolean)

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!

Nummer (Digital)

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 (string)

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="http://www.w3cschool.cc/">w3cschool本教程</a>
</body>
</html>
]]
print(html)

Die folgenden Codeausführung Ergebnisse:

<html>
<head></head>
<body>
    <a href="http://www.w3cschool.cc/">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 .., wie zum Beispiel:

> print("a" .. 'b')
ab
> print(157 .. 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
> 

Tabelle (Tabelle)

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 .. " : " .. 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

Funktion (Funktion)

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 .. " = " .. val
end)

Skriptausführung Ergebnisse:

$ lua function_test2.lua 
key1 = val1
key2 = val2

Thread (Thread)

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.


Userdaten (custom-Typ)

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.