In diesem Kapitel wird eine kurze Einführung in die grundlegende Lua-Stattaxe vorgestellt, die vonRUNOOB.COMGrundlegende Lehre, wenn Sie Fragen haben, kontaktieren Sie bitte die Verarbeitung von
Lua-Stattaxe ist relativ einfach, leichter zu verstehen und leistungsfähig. Also, eine einfache Zusammenfassung einiger Syntaxregeln von Lua, die einen schnellen Einstieg in
1 Kommentar
1.1 Einzelzeilen Kommentar
Ein Programm zu schreiben, das immer ohne Kommentare ist. In Lua, zwei aufeinanderfolgende Minuszeichen "--" markieren den Beginn des Kommentars in einer einzelnen Zeile und dauern bis zum Ende der Zeile.Äquivalent zu "//" in C und C + +, wie in
---------- HTTP POST CHANGE PROJECT START ----------
function on_http_finish_cb(key, value)
if key=='data'
then
-- do logical operations, user code
bell_cnt = 0
end
end1.2 mehrzeilen Kommentar unten gezeigt.
Der Kommentar beginnt mit "-- [[" und dauert bis "--]]". Diese Anmerkung entspricht der in der Sprache C..../" in C, wie unten
---------- HTTP POST CHANGE PROJECT START ----------
function on_http_finish_cb(key, value)
if key=='data'
then
-- do logical operations, user code
bell_cnt = 0
--[[ for i = sc_comeState, sc_bellFinsh
do
set_text(i, 3, '00 : 00')
end--]]
end
end2 dargestellt wird. Anweisungsblock
In C wird ein Anweisungsblock durch "{" und "}" eingeschlossen, in Lua wird er durch do und end eingeschlossen, wobei end das Ende des letzten Blockes bezeichnet, z. B.:
for i = 0, 10
do
print("Hello")
endoder durch dann und end eingeschlossen
if 1 + 1 ==2
then
print("Hello")
end3. Variablentypen
Lua ist eine dynamische Typsprache, ohne Typdefinitionen (Typen wie C, Form, unsignierte, Zeichen usw.), sondern nur Variablen zuweisen. Werte können in Variablen gespeichert, als Argumente übergeben oder als Ergebnis zurückgegeben werden. In Lua gibt es acht grundlegende Typen: nil, boolean, number, string, user data, function, thread und table.
| Typus | Beschreibung |
|---|---|
| nil | Das einfachste ist, nur der Wert nil gehört zu dieser Klasse und zeigt einen ungültigen Wert an.(im bedingten Ausdruck entspricht falsche), in der Anwendung zu vermeiden, dass der Wert nil auftritt, muss eine illegale Beurteilung |
| number | Bildschirm MCU ist 32 Bit, in der tatsächlichen Bildschirm-Anwendung, Zuweisende Werte entsprechen langen Form - oder Single-Preision - Gleitkomma-String |
| string | durch ein Paar doppelter oder einziger Anführungszeichen |
| table | Eine Tabelle in Lua ist eigentlich ein "associatives Array", wobei der Index eines Arrays Zahlen, Zeichenfolgen oder Tabellentypen sein kann. In Lua wird die Erstellung von Tabellen durch "Konstruktionsausdrücke" durchgeführt, der einfachste Konstruktionsausdruck ist {}, um eine leere Tabelle zu erstellen |
| function | In C oder Lua geschriebene Funktion |
3.1 nil (null)
Der nil-Typ gibt einen Wert aus, der keinen gültigen Wert hat, der nur einen Wert hat - nil, zum Beispiel eine Variable ohne zugewiesene Ausgabe eines Wertes: nil
> print(type(a))
nil
>Grenzwerte Beurteilung In der Praxis muss die verweisende Variable am besten beurteilen, ob sie leer sind oder nicht
if type(a) == 'nil'
then
–-user code
else
-–user code
end3.2 number (number)
Lua verfügt standardmäßig über nur einen number-Typ - double (double precision),Aber die MCU des Bildschirms ist ein 32 - Bit-Prozessor, so dass nur eine einzelne Präzision unter dem Bildschirm ausgeführt wird
Die folgenden Schreibungen werden als number-Typen angesehen:
local a = 2
local b = 2.2
local c = 0.2
local d = 0.2e-1
print(type(a))
print(type(b))
print(type(c))
print(type(d))Ausführungsbeispiel, Ergebnisse der Code-Ausführung oben:
>number
>number
>number
>number
>>number
>number3. string3
Eine Zeichenfolge wird durch ein Paar doppeltes oder einzelnes Anführungszeichen angegeben.
local string1 = "this is string1"
local string2 = 'this is string2'3.4 Table (Table)
Äquivalent zu einem Array in C, in Lua wird die Erstellung von Tabellen durch einen "Konstruktionsausdruck" durchgeführt, der einfachste Konstruktionsausdruck ist {}, der eine leere Tabelle erstellt. Sie können auch einige Daten in der Tabelle hinzufügen, direkt die Tabelle initialisieren, der Unterzeichner standardmäßig beginnt mit 1, Ausgabe-Test wie folgt
-- 创建一个空的 table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
print(tbl2[0])
print(tbl2[1])Ausführen von Instanzen, oben Code Ausführung Ergebnisse:
>nil --报错
>appleZuweisung der Tabelle Unterzeichner 0 Wert, in der Ausgabe nur normal
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
tbl2[0] = "banana"
print(tbl2[0])
print(tbl2[1])Ausführen von Instanzen, oben Code Ausführung Ergebnisse:
>banana
>apple3.5 function (Funktion)
In Lua müssen die Funktionsdefinitionen wie folgt deklariert werden, die auf dem Aufrufenden
-- function_test.lua 脚本文件
function factorial1(n)
if n == 0
then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))ausgeführt werden müssen, um das Ergebnis der Code-Ausführung zu erzeugen:
>120
4 Variable Definition
Variablen müssen im Code deklariert werden, bevor sie verwendet werden, d.h. sie erstellt werden, die Variablen sind nil
Global Variable: Alle Variablen in Lua sind globale Variablen, ob in Anweisungsblöcken oder Funktionen, es sei denn, sie sind explizit als lokale Variablen deklariert
lokale Variablen: Der Anwendungsbereich ist vom Beginn der Deklaration bis zum Ende des Anweisungsblocks
-- test.lua 文件脚本
a = 5 -- 全局变量
local b = 5 -- 局部变量
function joke()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
print(c,d) --> 5 nil
do
local a = 6 -- 局部变量
b = 6 -- 对局部变量重新赋值
print(a,b); --> 6 6
end
print(a,b) --> 5 65 Steuerungsanweisungen
5.1 if (Interpretation Anweisungen)
Das Ergebnis des bedingten Ausdrucks der Steuerungsstruktur kann beliebige Werte sein, wobei Lua false und nil als falsch und true und nonnil als wahr betrachtet. Beachten Sie, dass 0 in Lua true ist:
local a = 0
if a == 0
then
print("a = 0")
elseif a > 0
then
print("a > 0 ")
else
print("a < 0 ")
endAusführen der Instanz, der folgende Code-Ausführung:
>a = 0
Keine Unterstützung für die switch case-Anweisung
5.2 while (Loop)
Erlaubt, dass ein Programm bestimmte Anweisungen wiederholt ausführt, wenn die Bedingung true ist. Bevor die Anweisung ausgeführt wird, wird überprüft, ob die Bedingung true ist
local a = 10
while(a > 0 )
do
a = a - 1
end5.3 für (Schleife)
Zahl für Schleife in der Lua-Programmiersprache Syntaxformat:
- Zahl für Schleife
- generische Zahl für Schleife
Zahl für Schleife
In der Programmiersprache Lua wird der Wert für das Schleifen-Syntaxformat variiert von exp1 zu exp2, variiert in Schritten von exp3 und wird einmal ausgeführt. "Ausführende"aus. exp3 ist optional, wenn nicht angegeben, ist es standardmäßig 1
for var=exp1,exp2,exp3 do
<执行体>
endInstanz-Schleife Ausgabe 1 - 5 numerische Werte:
for i=1,5 do
print(i)
endAusführen der Instanz, die Ergebnisse der folgenden Code-Ausführung:
>1
>2
>3
>4
>5generische for-Schleife
generische for-Schleife durchläuft alle Werte über eine Iterator-Funktion, ähnlich wie die foreach-Anweisung in Java. Ein generisches for-Schleife - Syntaxformat in der Programmiersprache Lua. i ist der Array-Indexwert und v ist der Array-Element - Wert des entsprechenden Index. ipairs ist eine von Lua bereitgestellte Iterator-Funktion, die das Array
--打印数组a的所有值
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end- Instanz-Schleife - Array days durchsetzt.
days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
for i,v in ipairs(days)
do
print(v)
endDas Ergebnis der oben genannten Exportbeispiele ist:
>Sunday
>Monday
>Tuesday
>Wednesday
>Thursday
>Friday
>Saturday6 - Operatoren
6.1 Arithmetische Operatoren
Die folgende Tabelle enthält die häufig verwendeten Arithmetischen Operatoren in der Lua-Sprache, wobei A auf 10 und B auf 20 gesetzt wird:
| Operatoren | Beschreibung | Instanz |
|---|---|---|
| + | Addition | A + B Ausgabe 30 |
| - | Subtraktion | A - B Ausgabe -10 |
| * | Multiplikation | A * B Ausgabe 200 |
| / | Dividieren | B / A Ausgabe 2 |
| % | Rest | B% A Ausgabe 0 |
| ^ | Multiplikation | A^2 Ausgabe 100 |
| - | Negativzeichen | - A Ausgabe -10 |
| ^ | Ausnahme oder | A ~ B Ergebnis 30 |
| & | 与 | A & B Ergebnis 0 |
| I | 或 | AIB-Ergebnis30 |
Wir können die Verwendung von arithmetischen Operatoren durch folgende Beispiele besser verstehen:
a = 21
b = 10
c = a + b
print("Line 1 - c 的值为 "..c )
c = a - b
print("Line 2 - c 的值为 "..c )
c = a * b
print("Line 3 - c 的值为 "..c )
c = a / b
print("Line 4 - c 的值为 "..c )
c = a % b
print("Line 5 - c 的值为 "..c )
c = a^2
print("Line 6 - c 的值为 "..c )
c = -a
print("Line 7 - c 的值为 "..c )
c = a~b
print("Line 8 - c 的值为 "..c )
c = a&b
print("Line 9 - c 的值为 "..c )
c = a|b
print("Line 10 - c 的值为 "..c )Das Ergebnis der Ausführung des obigen Programms lautet:
>Line 1 - c 的值为 31
>Line 2 - c 的值为 11
>Line 3 - c 的值为 210
>Line 4 - c 的值为 2.1
>Line 5 - c 的值为 1
>Line 6 - c 的值为 441
>Line 7 - c 的值为 -21
>Line 6 - c 的值为 31
>Line 7 - c 的值为 0
>Line 7 - c 的值为 316.2 Relation Operatoren
Die folgende Tabelle listet die häufig verwendeten Relation Operatoren in der Lua-Sprache auf, wobei A auf 10, B auf 20:
| Operator | Beschreibung von | - Instanzen |
|---|---|---|
| == | ist gleich, prüft, ob die beiden Werte gleich sind, und gibt true zurück, andernfalls gibt false | = = |
| ~= | ist nicht gleich, prüft, ob zwei Werte gleich sind, gibt nicht gleich true zurück, andernfalls gibt false | (A ~ = B) ist wahr. |
| > | Greater than, wenn der Wert auf der linken Seite größer ist als der Wert auf der rechten Seite, gibt es true zurück, andernfalls gibt es false zurück. | (A > B) zurück. |
| < | Wenn der Wert auf der linken Seite größer ist als der Wert auf der rechten Seite, gibt es false zurück, andernfalls gibt es true | (A < B) ist wahr. |
| >= | größer oder gleich, gibt true zurück, wenn der linke Wert größer oder gleich der rechte Wert ist, gibt false zurück, andernfalls gibt false zurück | (A > = B) gibt false zurück. |
| < = | kleiner oder gleich, gibt true zurück, wenn der linke Wert kleiner oder gleich der rechte Wert ist, gibt false zurück | (A < = B) gibt true zurück. |
Beispielsweise können wir die Anwendung von relativen Operatoren durch folgende Beispiele besser verstehen:
a = 21
b = 10
if( a == b )
then
print("Line 1 - a 等于 b" )
else
print("Line 1 - a 不等于 b" )
end
if( a ~= b )
then
print("Line 2 - a 不等于 b" )
else
print("Line 2 - a 等于 b" )
end
if ( a < b )
then
print("Line 3 - a 小于 b" )
else
print("Line 3 - a 大于等于 b" )
end
if ( a > b )
then
print("Line 4 - a 大于 b" )
else
print("Line 5 - a 小于等于 b" )
end
-- 修改 a 和 b 的值
a = 5
b = 20
if ( a <= b )
then
print("Line 5 - a 小于等于 b" )
end
if ( b >= a )
then
print("Line 6 - b 大于等于 a" )
endDas Ergebnis der Ausführung ist:
>Line 1 - a 不等于 b
>Line 2 - a 不等于 b
>Line 3 - a 大于等于 b
>Line 4 - a 大于 b
>Line 5 - a 小于等于 b
>Line 6 - b 大于等于 a6.3 Logische Operatoren
Die folgende Tabelle listet die gängigen logischen Operatoren in der Lua-Sprache auf, wobei der Wert von A auf true und der Wert von B auf false festgelegt wird:
| Operator | Beschreibt die Logik und Operatoren der | Instanz |
|---|---|---|
| and | . Wenn A false ist, gibt es A zurück, andernfalls B. | (A und B) sind false. |
| or | Logische oder Operatoren. Wenn A true ist, gibt es A zurück, andernfalls gibt es B. | (A oder B) ist wahr. |
| not | Logischer Nicht-Operator Im Gegensatz zum Ergebnis einer logischen Operation ist die logische Nicht-False, wenn die Bedingung true ist. | nicht (A und B) sind wahr. |
Beispielsweise können wir die Anwendung der Logikoperatoren durch folgende Beispiele besser verstehen:
a = true
b = true
if ( a and b )
then
print("a and b - 条件为 true" )
end
if ( a or b )
then
print("a or b - 条件为 true" )
end
print("---------分割线---------" )
-- 修改 a 和 b 的值
a = false
b = true
if ( a and b )
then
print("a and b - 条件为 true" )
else
print("a and b - 条件为 false" )
end
if ( not( a and b) )
then
print("not( a and b) - 条件为 true" )
else
print("not( a and b) - 条件为 false" )
endDas Ergebnis der oben genannten Ausführung ist:
>a and b - 条件为 true
>a or b - 条件为 true
>---------分割线---------
>a and b - 条件为 false
>not( a and b) - 条件为 true6.4 Andere Operatoren
Die folgende Tabelle enthält eine Liste der Verbindungsoperatoren in der Lua-Sprache mit Operatoren, die die Länge einer Tabelle oder einer Zeichenfolge berechnen:
| Operator | Beschreibung | Instanz |
|---|---|---|
| .. | Verbindungen zweier Zeichenfolgen | a.. b, wobei a "Hello" und b "World" ist, und die Ausgabe "Hello World" lautet. |
| # | Einer Operator, der die Länge einer Zeichenfolge oder einer Tabelle zurückgibt. | # "Hello" Rückgabe 5 |
Beispielsweise können wir die Anwendung von Verbindungsoperatoren und Operatoren, die die Länge einer Tabelle oder einer Zeichenfolge berechnen, durch das folgende Beispiel besser verstehen:
a = "Hello "
b = "World"
print("连接字符串 a 和 b ", a..b )
print("b 字符串长度 ",#b )
print("字符串 Test 长度 ",#"Test" )
print("菜鸟教程网址长度 ",#"www.runoob.com" )Das Ergebnis der Ausführung des obigen Programms lautet:
>连接字符串 a 和 b Hello World
>b 字符串长度 5
>字符串 Test 长度 4
>菜鸟教程网址长度 146.5 Operator Priorität
von höchster zu niedrigerer Reihenfolge:
^
not - (unary)
* / %
+ -
..
< > <= >= ~= ==
and
orAlle binären Operatoren mit Ausnahme von^und..sind linksverknüpfte Instanzen von
a+i < b/2+1 <--> (a+i) < ((b/2)+1)
5+x^2*8 <--> 5+((x^2)*8)
a < y and y <= z <--> (a < y) and (y <= z)
-x^2 <--> -(x^2)
x^y^z <--> x^(y^z), und wir können die Prioritäten von Operatoren in der Lua-Sprache durch das folgende Beispiel besser verstehen:
a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d;*-- ( 30 * 15 ) / 5
print("(a + b) * c / d 运算值为 :",e )
e = ((a + b) * c) / d; *-- (30 * 15 ) / 5
print("((a + b) * c) / d 运算值为 :",e )
e = (a + b) * (c / d);*-- (30) * (15/5)
print("(a + b) * (c / d) 运算值为 :",e )
e = a + (b * c) / d; *-- 20 + (150/5)
print("a + (b * c) / d 运算值为 :",e )Das Ergebnis der Durchführung des vorstehenden Verfahrens ist:
>(a + b) * c / d 运算值为 : 90.0
>((a + b) * c) / d 运算值为 : 90.0
>(a + b) * (c / d) 运算值为 : 90.0
>a + (b * c) / d 运算值为 : 50.0
Antwort veröffentlichen