LUA Grundlegende Syntax

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

LUA Grundlegende Syntax

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
end

1.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
end

2 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") 
end

oder durch dann und end eingeschlossen

if 1 + 1 ==2
then 
    print("Hello") 
end

3. 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.

TypusBeschreibung
nilDas 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
numberBildschirm MCU ist 32 Bit, in der tatsächlichen Bildschirm-Anwendung, Zuweisende Werte entsprechen langen Form - oder Single-Preision - Gleitkomma-String
stringdurch ein Paar doppelter oder einziger Anführungszeichen
tableEine 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
functionIn 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
end

3.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
>number

3. 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 --报错
>apple

Zuweisung 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
>apple

3.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 6

5 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 ")
end

Ausfü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
end

5.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  
    <执行体>  
end

Instanz-Schleife Ausgabe 1 - 5 numerische Werte:

for i=1,5 do
    print(i)
end

Ausführen der Instanz, die Ergebnisse der folgenden Code-Ausführung:

>1
>2
>3
>4
>5
generische 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) 
end

Das Ergebnis der oben genannten Exportbeispiele ist:

>Sunday
>Monday
>Tuesday
>Wednesday
>Thursday
>Friday
>Saturday

6 - 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:

OperatorenBeschreibungInstanz
+AdditionA + B Ausgabe 30
-SubtraktionA - B Ausgabe -10
*MultiplikationA * B Ausgabe 200
/DividierenB / A Ausgabe 2
%RestB% A Ausgabe 0
^MultiplikationA^2 Ausgabe 100
-Negativzeichen- A Ausgabe -10
^Ausnahme oderA ~ 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 的值为     31

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

OperatorBeschreibung 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" )
end

Das 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 大于等于 a

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

OperatorBeschreibt die Logik und Operatoren derInstanz
and. Wenn A false ist, gibt es A zurück, andernfalls B.(A und B) sind false.
orLogische oder Operatoren. Wenn A true ist, gibt es A zurück, andernfalls gibt es B.(A oder B) ist wahr.
notLogischer 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" )
end

Das Ergebnis der oben genannten Ausführung ist:

>a and b - 条件为 true
>a or b - 条件为 true
>---------分割线---------
>a and b - 条件为 false
>not( a and b) - 条件为 true

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

OperatorBeschreibungInstanz
..Verbindungen zweier Zeichenfolgena.. 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
>菜鸟教程网址长度     14

6.5 Operator Priorität

von höchster zu niedrigerer Reihenfolge:

^
not    - (unary)
*      /       %
+      -
..
<      >      <=     >=     ~=     ==
and
or

Alle 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
Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.