LUA 基本構文の説明

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

LUA 基本構文の説明

この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
end

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

2.文のブロック

文ブロックはCでは“{”と“}”で囲まれ、Luaではdoとendで囲まれます。endは最後のコードブロックの終わりを表します。

for i = 0, 10
do 
    print("Hello") 
end

thenとendで囲みます。

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

3.変数の種類

Luaは动的型付けで、型がなく(型像C、整形、符号なし、文字など)、変数に値を代入するだけです。値は変数に格納したり、引数として渡したり、結果として返されたりできます。Luaには、nil、boolean、number、string、userdata、function、thread、tableの8つの基本型があり、実際の画面でよく使われる型は以下の通りです。

タイプの種類説明する。
nilこれは最も単純で、値nilのみがクラスに属し、無効な値(条件式ではfalseに相当)を表し、アプリケーションでnil値の出現を避け、不正な判断を行う必要があります。
number画面MCUは32ビットであり、実際の画面アプリケーションでは、長整形や単精度浮動小数点に相当する値を割り当てます。
string文字列は、二重引用符または一重引用符のペアで表されます
tableLuaの表tableは実际には“连想配列”associative arraysであり、配列のインデックスは数値、文字列、表型です。Luaでは、テーブルの作成は“コンストラクタ式”で行われます。最も単純なコンストラクタ式は{}で、空のテーブルを作成します。
functionCまたはLuaで記述された関数

3.1 nil(空)

nil型は、有効な値を持たず、値が1つしかないことを意味します。例えば、代入なしで変数を出力するとnil値が出力されます。

> print(type(a))
nil
>

境界値の判断:実際には、参照される変数が空かどうかを判断する必要があります。

if type(a) == 'nil'
then
    –-user code
else
    -–user code
end

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

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

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

実行例、上記のコードの実行結果:

>120

4変数の定義

変数を使用する前に、コード内で宣言する必要があります。つまり、変数を作成し、変数のデフォルト値は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 = 0

switch case文のサポートなし

5.2 while(ループ)

条件がtrueの場合、プログラムに特定の文を繰り返し実行させます。文を実行する前に条件がtrueかどうかをチェックします

local  a = 10
while(a > 0 )
do
    a = a - 1
end

5.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
>Saturday

6演算子。

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の値は     31

6.2関係演算子

以下の表は、Lua言語で一般的に使用される関係演算子を示し、Aの値を10、Bの値を20とします。

演算子の場合説明する。例:例
==2つの値が等しいかどうかをチェックし、等しい場合はtrueを返し、それ以外の場合はfalseを返します。A == B
~=2つの値が等しいかどうかをチェックし、等しくない場合はtrue、そうでない場合はfalseを返します。A ~= B
>左の値が右の値よりも大きい場合はtrue、そうでない場合はfalseA B
<左の値が右の値よりも大きい場合はfalse、そうでない場合はtrueA B
>=左の値が右の値よりも大きい場合はtrue、そうでない場合はfalseA = B
<=左の値が右の値より小さい場合はtrue、そうでない場合はfalseA = 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- 条件がtrue

6.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サイトの長さ     14

6.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
この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

Leave a Reply

Your email address will not be published. Required fields are marked *.