Lua の簡単な使用法といくつかの簡単なデータ型

Lua には、nil、boolean、number、string、userdata、function、thread、table の 8 つの基本型があります。

Lua には自動インクリメント ++ および自動デクリメント -- の操作はなく、変数 = 変数 + 変数 (例: a=a+b) によってのみ実行できます。

Lua 連結文字: 「+」の代わりに「..」

Lua の and, or, non: and, or, ~

Lua の nil 型はどのデータ型にも接続できませんが、個別に出力できます (エラーが報告されます)。

a=1、

b=nil,
print(a..b) -- エラーが報告されます。nil は他の型と接続できません。
Print(a) --a=1
print(b) --b=nil は単独でのみ出力可能

三項演算子: b=1>2?1:0。Lua では b= (x>y) および x または y

x,y=1,2
sum = (x>y) および x または y
print(sum)

出力2

Lua ではすべてを変数にすることができ、変数の宣言はなく、変数の割り当てのみが行われます。

文字列の長さを取得する

#a 文字列の長さを取得する

変数を複数定義する場合、余分な部分は出力または置換されず、複数の定義に対してエラーは報告されません。

例:a,b=1,2,3、

print(a..b) -- a..b=12 を出力します。これは、a=1、b=2、3 は役に立たない数値であり、エラーは報告されないことを意味します。

判定文 if、elseif、else

1. if 条件 then メソッド本体の終了

2、

条件があれば

        メソッド本体

elseif 条件の場合

        メソッド本体

それ以外

        メソッド本体

 終わり

a,b=1,2
if a<b then
    print('a<b')
end

if a<b then
print('a<b')
else
print('a>=b')
end

if a<b then
    print('a<b')
elseif a==b then
    print('a==b')
else
    print('a>b')
end

if not(a>b) then
print('a<b')
end 

条件のループ ステートメント (変数 = 最小、最大、自動インクリメント数) do...end、while 条件 do...end、repeat...until 条件 

while 条件 do...end

a,sum=1,0
の間、a<=10 は
sum=sum+a を実行します。
a=a+1
print(sum)
終了

出力: 1、3、6、10、15、21、28、36、45、55

 repeat...until 条件 

a,sum=1,0     sum=sum+a
を繰り返します 。a=a+1 a>10 までprint(sum)



出力: 1、3、6、10、15、21、28、36、45、55

sum=0
for a=1,10,1 do
    sum=sum+a
    print(sum)
end

出力: 1、3、6、10、15、21、28、36、45、55

sum=0
for a=1,-5,-1 do
    sum=sum+a
    print(sum)
end

 出力: 1、1、0、-2、-5、-9、-14

 Lua 関数 (メソッド) の使用と定義

function Add()
a=1
b=3
c=ba
print(c)
end

出力: 2

function Sub(a,b)
c=a+b
print(c)
Add()
end

出力: 3、2

関数 Div(a,b)
    c=a+b
    return c
end
x=Div(1,2)
print(x)

出力: 3 

 関数 Mu()
    a=1
    b=3
    c=a+b
    return c
end y
=Mu()
print(y)

出力: 4

 複数のパラメータの使用 #a は大きな一連の数値を表します

関数 Sum(...)
    a={...}
    b=1;
    for i=1,#a do
        b=b*a[i]
        print(b)
    end
end
Sum(1,2,3,4,5,6)

出力: 1、2、6、24、120、720

 関数の入れ子:

function Get()
    su = function()
        print("hhh")
    end
    return su
end
ゲツ=Get()
ゲツ()

出力: うーん

function Get1()
    return function()
        print(「愛のために一緒に働きましょう」)
    end
end

getNext=Get1()
getNext()

 出力: 愛のために一緒に働きましょう

Lua はオーバーロードをサポートしていないため、同じメソッドを使用すると上書きされます。

function Add()
a=1
b=2
c=a+b
print(c)
end --3

function Add(a,b)
c=a+b
print(c)
end

加算(2,3)

 出力: 5; Add() 関数はオーバーライドされ、Add(a,b) によって使用されます。

 数学関数ライブラリの使用

i=153.4
print(math.ceil(i)) --154、math.ceil() は切り上げ
print(math.floor()) --153、math.floor() は切り捨て

print(math.abs(-12)) -- 絶対値を取得します

print(math.max(3,5,7,9,2,1)) -- 最大値を取得します
print(math.min(3,5,7,9,2,1)) -- 最小値を取得します

print(math.pow(2,3)) --power, 2^3
print(math.sqrt(9)) --平方根

print(math.deg(math.pi)) --ラジアンで変換します
print(math.cos(math.pi)) --ラジアンで変換します
print(math.sin(math.pi)) --ラジアンで変換します
print( math.tan(math.pi)) -- ラジアンで変換します

print(math.modf(1.2)) -- 整数と小数を区切る

閉鎖

--クロージャー例1
function Get()
    local a =10
    return function()
        print(a)
        a=a+1
    end
end
F=Get()
F()
Output: 10

-- 包含例2
function Get1(n)
    local function Get2()
        print(n)
        
    end
    local function Get3()
        n=n+10
    end
    return Get2,Get3
end
G1,G2=Get1(2022)
G1() -- 2022年

G2() --2022+10 (演算)
G1() --2032 (出力関数)

-- クロージャ反復子効果
関数 Get(t)
    local a=0
    return function()
        a=a+1
        return t[a]
    end
end
t={1,2,3,4}
F=Get(t)
print (F ())
プリント(F())
プリント(F())
プリント(F()) 

出力: (1 つの出力と 1 つのディスプレイ)

1

2

3

4

 乱数の使用:

math.randomseed(os.time()) -- シードを設定します
math.random(100)
print(math.random(100)) -- 乱数

出力: ランダム出力

数値型を文字列型+数値型に変換すると、自動的に数値型に変換されます。

定義された値が数値型であるため、数値型に変換されます。

b=12、tostring(b) は文字列型に変換されます
print(tostring(b)+2) --15
print('12'+2) --15
print(tostring(b)..2) --123

文字列の使用

a='abcdb'
print(string.upper(a)) --uppercase
print(string. lower(a)) -- lowercase
print(string.reverse(a)) --reverse 出力

print(string.find(a,'bcd')) --Find 2 4, 2 は見つかった最初の文字の位置、4 は最後の文字の位置です print(string.sub(
a,2,3) ) -- 文字列の 3 番目と 4 番目の文字をインターセプトします。

print(string.rep(a,2)) --2 回繰り返します
print(string.gsub(a,'b','!')) --replace a!cd! 2, 2 は置換の数を表します

テーブルの使用:

--Table: 添え字は 1 から始まり、添え字の範囲外の値は nil です。

a={1,2,3,'A','b',true}
print(a[-1])
print(a[1]) -- 最初の添え字の値
print(#a) --Table print(table.getn(a))の長さ
-- テーブルの長さ

for i=1,#a,1 do --sequential Output
    print(a[i])
end

for i=#a,1,-1 do --flashback Output
    print(a[i])
end

カスタムインデックス

1、

b={[0]=1,2,3,'a',[-1]='b',true}
for i=-1,#b,1 do
    print(b[i]) --b, 1,2,3,a,true
end
print("\n") --换行

2、

b={[1]=1,2,3,'a',[2]='b',true}
for i=1,#b,1 do
    print(b[i]) --2,3,あ、トゥルー
エンド

Lua モジュール (インスタンス) も C# のクラスです

--Student クラス
Student={     id=1001, --Attribute     name='Xiaotian', -- --Attribute     Eat=function() --クラスのメソッド定義         print(Student.name..'とてもおいしいです。食べる')     end,     Study=function()         print('good Good day')     end,         Fly=function(t) -- パラメータ付きメソッド         print(t.name..'can fly')     end }











-- アクセス クラス メソッドとクラス属性を呼び出します
。 print(Student.id..'\t'..Student.name)
Student.Eat()
Student.Study()


--パラメータを指定してメソッド Student.Fly(Student) を呼び出します。 --このメソッドは次のメソッドStudent:Fly()
と同等です。

--クラス外に属性とメソッドを追加 --
メソッド 1 を追加:
Student.sex=' Male' --Attribute
Student.Sleep=function() --メソッド
    print('sleep like a pig's head')
end
--メソッドを追加2 :
function Student.Play()
    print('Have fun')
end

-- 外部に追加された属性とメソッドにアクセスします
print(Student.sex)
Student.Sleep()
Student.Play()

ファイル間呼び出し (他の Lua ファイルのプロパティの呼び出し)

require('Three') -- 他の Lua ファイルの内容を要求します。 3、ローカル変数
    print(a)
    print(b)を呼び出すことはできません

 アクセスモジュール(クラス)

 require('Four')        
Four.Play()
Four.Sleep()

ファイルの読み取り、ファイルの書き込み

    --読み取り、a+ は読み書き可能、a
file=io.open('D:\\Lua\\One\\aa.txt','r')
io.input(file)
f=io.read( )
print(f)
f=io.read()
print(f)

for i in io.lines('D:\\Lua\\One\\aa.txt') do
    print(i)
end
io.close()

--テキストの書き込み(上書き)
file=io.open("D:\\Lua\\One\\aa.txt",'w')
io.output(file)
io.write('11111')
io.close ()

--テキストの書き込み (追加)
file=io.open("D:\\Lua\\One\\aa.txt",'a+')
io.output(file)
--io.write('\n2222')

io.write('333')
io.close()

--テキストの書き込み (追加)
file=io.open("D:\\Lua\\One\\aa.txt",'a+')
io.output(file)
--io.write('\n2222')

io.write('333')
io.close()

 イテレータ: ペア、ipairs は for ループを介してイテレータによって読み取られます。

--自定インデックス
a={[0]=11,22,33,44,55}
for f,v inpairs(a) do
    print(f,v)
end
print('88888888')
for f,v in ipairs(a) do
    print(f,v)
終了

辞書:

a={['id']=1001,['name']='李思',['age']=18} -- 辞書を読みます。 f はキー、 v はf,v の
値です。
pairs( a) do
    print(f,v) -- ID 1001、名前 Li Si、年齢 18 歳
end
print('*************')        
for _,v inpairs(a) do
    print(_,v ) --id 1001、名前 Li Si、年齢 18
end --ipairsは ipairs(a) の f,v の
辞書コンテンツを読み取れませんdo     print(f,v) --id、名前、年齢読み取りキー値を読み取れませんend --pairs (a) の f,v の単一出力キーdo     print(f) --id、名前、年齢 end     --pairs (a) の f,v の単一出力値do     print( v) --1001、ジョン・ドゥ、18エンド    










 a={11,22,nil,33,44,55} --pairs は nil に遭遇すると走査を続け、 pairs(a) do     print(f,v) endの f,v には
nil は表示されません。


出力:

1 11
2 22
4 33
5 44
6 55



--ipairs は、ipairs(a) do
    print(f,v)
endの f,vが nil に遭遇するとトラバースを停止します。

出力:

1 11
2 22

 

おすすめ

転載: blog.csdn.net/m0_71624363/article/details/129893283