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
endgetNext=Get1()
getNext()出力: 愛のために一緒に働きましょう
Lua はオーバーロードをサポートしていないため、同じメソッドを使用すると上書きされます。
function Add()
a=1
b=2
c=a+b
print(c)
end --3function 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])
endfor 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