このchapterでは、基本的なLua構文を簡単に紹介します。RUNOOB.COM基礎教育、質問がある場合は、お問い合わせください。
Luaの構文は比較的シンプルで、理解しやすく、強力です。Luaの構文ルールを簡単にまとめて簡単に始めましょう。
1コメント1件
1.1単線の注釈
プログラムを書くことは常にコメントを必要としない。Luaでは、1行のコメントで、2つの连続したマイナス"--“”はコメントの開始を表し、行末まで続きます。C,C++言語における“//”に相当し,以下のようになる
---------- 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複数行のコメント
“--[[[]]はコメントの開始を示し、“--]”まで続きます。このコメントはCの“/”に相当する...“/”、次のように
---------- 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.文のブロック
文ブロックはCでは“{”と“}”で囲まれ、Luaではdoとendで囲まれます。endは最後のコードブロックの終わりを表します。
for i = 0, 10
do
print("Hello")
endthenとendで囲みます。
if 1 + 1 ==2
then
print("Hello")
end3.変数の種類
Luaは动的型付けで、型がなく(型像C、整形、符号なし、文字など)、変数に値を代入するだけです。値は変数に格納したり、引数として渡したり、結果として返されたりできます。Luaには、nil、boolean、number、string、userdata、function、thread、tableの8つの基本型があり、実際の画面でよく使われる型は以下の通りです。
| タイプの種類 | 説明する。 |
|---|---|
| nil | これは最も単純で、値nilのみがクラスに属し、無効な値(条件式ではfalseに相当)を表し、アプリケーションでnil値の出現を避け、不正な判断を行う必要があります。 |
| number | 画面MCUは32ビットであり、実際の画面アプリケーションでは、長整形や単精度浮動小数点に相当する値を割り当てます。 |
| string | 文字列は、二重引用符または一重引用符のペアで表されます |
| table | Luaの表tableは実际には“连想配列”associative arraysであり、配列のインデックスは数値、文字列、表型です。Luaでは、テーブルの作成は“コンストラクタ式”で行われます。最も単純なコンストラクタ式は{}で、空のテーブルを作成します。 |
| function | CまたはLuaで記述された関数 |
3.1 nil(空)
nil型は、有効な値を持たず、値が1つしかないことを意味します。例えば、代入なしで変数を出力するとnil値が出力されます。
> print(type(a))
nil
>境界値の判断:実際には、参照される変数が空かどうかを判断する必要があります。
if type(a) == 'nil'
then
–-user code
else
-–user code
end3.2数値####(Number)
Luaにはデフォルトの数値型が1つしかありません-doubleしかし、画面上のMCUは32ビットプロセッサであるため、画面上では単精度しかサポートしません。
以下の記述は数値型と見なされます:
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))実行例、上記のコードの実行結果:
>number
>number
>number
>number
>>number
>number3. 3文字列
文字列は、二重引用符または一重引用符のペアで表されます
local string1 = "this is string1"
local string2 = 'this is string2'3.4 table(テーブル)
Luaでは、テーブルの作成は“コンストラクタ式”によって行われます。最も単純なコンストラクタ式は{}で、空のテーブルを作成するために使用されます。テーブルにデータを追加したり、テーブルを直接初期化したり、デフォルトでインデックスを1から始めたり、出力テストは以下のようになります。
空のテーブルを作成する。
ローカルtbl1 = {}
- 直接初期表
local tbl2 = {"apple""pear""orange""grape"}
print [tbl2 0]
print tbl2 1]実行例、上記のコードの実行結果:
>Nil-間違っている。
>Apple(アップル)テーブルの添字0に値を代入すると、出力で正常になります。
- 直接初期表
local tbl2 = {"apple""pear""orange""grape"}
tbl2 0] = "banana"
print [tbl2 0]
print tbl2 1]実行例、上記のコードの実行結果:
>banana
>apple3.5関数(function)
Luaでは、関数定義は次のように宣言され、呼び出し元で定義する必要があります。
--function_test.luaスクリプトファイル
function factorial1 n
N == 0の場合
そして、Then
Return 1より
elseさん
return n * factorial1 n - 1
End of Endシングル
End of Endシングル
print factorial1 5実行例、上記のコードの実行結果:
>1204変数の定義
変数を使用する前に、コード内で宣言する必要があります。つまり、変数を作成し、変数のデフォルト値はnilです。
グローバル変数:Luaの変数は、ローカル変数として明示的に宣言されていない限り、ブロックや関数内であっても、すべてグローバルです。
ローカル変数:宣言された場所からブロックの終わりまでのスコープ
--test.luaファイルスクリプト
A = 5。 - グローバル変数。
B = 5の場合 - ローカル変数。
function joke
C = 5。 - グローバル変数
d = 6の値 - ローカル変数。
End of Endシングル
print c d -5 nil
Doすること
ローカルA = 6 - ローカル変数。
B = 6。 ローカル変数の再割り当て
print a、b; 【6】6 6
End of Endシングル
print a b 【5 6】5つの制御文
5.1 if文の解釈
制御構造体の条件式の結果は任意の値を取ることができ、Luaはfalseとnilをfalse、trueとnil以外をtrueとみなします。Luaでは0が真であることに注意してください。
local a = 0
if a == 0
then
print("a = 0")
elseif a > 0
then
print("a > 0 ")
else
print("a < 0 ")
end実行例、上記のコードの実行結果:
>a = 0switch case文のサポートなし
5.2 while(ループ)
条件がtrueの場合、プログラムに特定の文を繰り返し実行させます。文を実行する前に条件がtrueかどうかをチェックします
local a = 10
while(a > 0 )
do
a = a - 1
end5.3 forループ
Luaプログラミング言語の数値forループ構文形式
- ループの値
- ジェネリックforループ
ループの値
Luaプログラミング言語の数値forループ構文形式では、varはexp1からexp2に変更され、各変更はvarをexp3ステップずつインクリメントし、1回実行されます。 “Executive”。exp3はオプションで、指定しない場合はデフォルトで1になります。
for var=exp1 exp2 exp3 do
<エグゼクティブ·エグゼクティブ>
End of Endシングルインスタンスループ出力1-5の数値
for i=1,5 do
print(i)
end実行例、上記のコードの実行結果:
>1
>2
>3
>4
>5ジェネリックforループ
汎用のforループは、Javaのforeach文に似たイテレータ関数を介してすべての値を反復します。Luaプログラミング言語におけるジェネリックforループ構文フォーマット。iは配列インデックス値、vは対応するインデックスの配列要素値です。ipairsはLuaが提供するイテレータ関数で、配列を反復します。
配列aのすべての値を表示する。
a = {"one"""three"}
for i v in ipairs a do
print i、v
End of Endシングルインスタンス循環配列days
days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
for i,v in ipairs(days)
do
print(v)
end上記の例の出力結果は次のとおりです。
>Sunday
>Monday
>Tuesday
>Wednesday
>Thursday
>Friday
>Saturday6演算子。
6.1算術演算子
以下の表は、Lua言語で一般的に使用される算術演算子を示し、Aの値を10、Bの値を20とします。
| 演算子の場合 | 説明する。 | 例:例 |
|---|---|---|
| + | 加算する。 | A + Bの結果30 |
| - | 減算法 | A-B出力結果-10 |
| * | 乗算する | A * B出力結果200 |
| / | 除算する | B / A出力結果2 |
| % | 残りを取る。 | B % A出力0 |
| ^ | 乗算する。 | A ^2出力結果100 |
| - | 負の符号 | 結果の出力-10 |
| ^ | 異常または | AとBの結果30 |
| & | と、 | B結果は0 |
| I | または | AIB結果30 |
算術演算子の応用を以下の例でよりよく理解することができます。
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)B
print "Line 10 - cの値は".. c)。上記の手順の結果は:
>行1-cの値は 31
>行2-cの値は 11
>行3-cの値は 210
>行4-cの値は 2.1
>行5-cの値は 1
>行6-cの値は 441
>行7-cの値は -21
>行6-cの値は 31
>行7-cの値は 0
>行7-cの値は 316.2関係演算子
以下の表は、Lua言語で一般的に使用される関係演算子を示し、Aの値を10、Bの値を20とします。
| 演算子の場合 | 説明する。 | 例:例 |
|---|---|---|
| == | 2つの値が等しいかどうかをチェックし、等しい場合はtrueを返し、それ以外の場合はfalseを返します。 | A == B |
| ~= | 2つの値が等しいかどうかをチェックし、等しくない場合はtrue、そうでない場合はfalseを返します。 | A ~= B |
| > | 左の値が右の値よりも大きい場合はtrue、そうでない場合はfalse | A B |
| < | 左の値が右の値よりも大きい場合はfalse、そうでない場合はtrue | A B |
| >= | 左の値が右の値よりも大きい場合はtrue、そうでない場合はfalse | A = B |
| <= | 左の値が右の値より小さい場合はtrue、そうでない場合はfalse | A = B |
例えば、関係演算子の応用を以下の例でよりよく理解することができます。
A = 21。
B = 10
if a == b
そして、Then
print "Line 1 - aはb"に等しい
elseさん
print "Line 1 - aはbと等しくない"
End of Endシングル
if a ~= b
そして、Then
print "Line 2 - aはbと等しくない"
elseさん
print "Line 2 - aはb"に等しい
End of Endシングル
if a b
そして、Then
print "Line 3 - aがbより小さい"
elseさん
print "Line 3 - aはb以上"
End of Endシングル
if a b
そして、Then
print "Line 4 - aはbより大きい"
elseさん
print "Line 5 - aはb以下"
End of Endシングル
aとbの値を変更する。
A = 5。
B = 20
if a = b
そして、Then
print "Line 5 - aはb以下"
End of Endシングル
if b = a
そして、Then
print "Line 6 - bはa"以上
End of Endシングル上記の手順の結果は:
>1行目aはbと等しくない
>2行目aはbと等しくない
>3行目aはbより大きい
>4行目aはbより大きい
>5行目aはb以下
>6行目Bはa以上6.3論理演算子(論理演算子)
以下の表は、Lua言語で一般的に使用される論理演算子を示し、Aをtrue、Bをfalseに設定します。
| 演算子の場合 | 説明する。 | 例:例 |
|---|---|---|
| and | 論理と演算子ですAがfalseの場合はAを返し、そうでない場合はBを返します。 | AとB |
| or | 論理または演算子。Aが真の場合はAを返し、そうでなければBを返す。 | A or B |
| not | 論理非演算子。論理演算の結果とは対照的に、条件が真の場合、論理は偽ではありません。 | not A and Bはtrueです。 |
例えば、以下の例を用いて論理演算子の応用をよりよく理解することができます。
A =真
B =真
if aとb
そして、Then
print "a and b - 条件はtrue"
End of Endシングル
if aまたはb
そして、Then
print "a or b - 条件がtrue"
End of Endシングル
print "---------------------------"
aとbの値を変更する。
A = falseです。
B =真
if aとb
そして、Then
print "a and b - 条件はtrue"
elseさん
print "a and b - 条件はfalse"
End of Endシングル
if not a and b
そして、Then
print "not a and b- 条件はtrue"
elseさん
print "not a and b- 条件はfalse"
End of Endシングル上記の手順の結果は:
>AとB:条件は真
>aまたはb - 条件が真
>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>aとb - 条件はfalse
>not a and b- 条件がtrue6.4その他の演算子
次の表に、Lua言語の結合演算子と、テーブルまたは文字列の長さを計算する演算子を示します。
| 演算子の場合 | 説明する。 | 例:例 |
|---|---|---|
| .. | 2つの文字列の結合 | A..。b aはHello "、bは"World"で、出力は"Hello World"です。 |
| # | 文字列またはテーブルの长さを返す単项演算子。 | #"Hello"は5を返します |
例として、次の例を挙げると、結合演算子とテーブルや文字列の長さを計算する演算子の使用をよりよく理解することができます。
a =“Hello”
B =“世界”
print "接続文字列aとb "、a.. b)。
print "b文字列长"#b
print "文字列Test长"#"Test"
print“初心者チュートリアルURLの長さ”#"www.runoob.com"上記の手順の結果は:
>接続文字列aとb {{せつぞくもじれつaとb}} ハロー·ワールド
>b文字列の長さ 5
>文字列Testの長さ 4
>Webサイトの長さ 146.5演算子の優先順位
高い順から低い順:
^
not - (unary)
* / %
+ -
..
< > <= >= ~= ==
and
orただし、 ^ そして、 .. 外部のすべての二項演算子は左連結である。
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)Lua言語の演算子の優先順位については、以下の例を参照してください。
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上記の手順の結果は:
>a + b 90.0
>((a + b) * c) / d运算值为 : 90.0
>a + b 90.0
>a + b * c/ d演算値は : 50.0
Leave a Reply