Luaの8種類のデータ型と基本文法
12552 ワード
8種類のデータ型 number実数、整数、浮動小数点数 string文字列は、付与値が変更できない場合、メソッドstringによって変更することができる.gsub()は を修正する nilグローバル変数は割り当てられていませんデフォルトはnilで、変数を削除するとnil に割り当てられます. boolean(bool)falseとnilは偽であり、その他は真 である. function関数 table配列、容器 userdata(クラス、他の言語が変換されるとuserdataタイプになる) threadスレッド 注意が必要 Luaの変数には事前定義のタイプがなく、各変数には任意のタイプの値を含めることができ、1つのデータ型の値 を直接割り当てることができる. nilタイプはnilの1つの値について、変数が付与されているかどうかを示し、変数がnilに付与されていることも削除変数 を示す. Type(xxx変数)を使用して、その変数のデータ型 を取得することができる. numberすべての数字、int float doubleタイプなどはnumberタイプ です.文字列は、付与値が変更できない場合、メソッドstringによって変更することができる.gsub()を修正するには、「xxas」の単一引用符と書くことができますが、二重引用符を使用することをお勧めします」 numberタイプは、すべての数字の文字列と計算することができ、文字列はタイプ変換 を行う. .. 接続記号、文字列タイプ、整形変数を接続できますが、実際の数値を直接使用する場合は、数値が表示されるため、後ろにスペースを追加します.2つの浮動小数点が1のように見えます..2(書き方を誤る)1.2(正しい書き方) タイプが異なる、numberタイプの123がstringタイプの123 に等しくないなど、比較判断も等しくない.計算演算子の余剰は浮動小数点数と計算でき、小数点レベル まで正確に計算できる.関係演算子における~=は等しくなく、cのような他の言語を表す!= 論理演算子and,or,not対応&,|,! 式:a and b aが偽であればaを返すb,a or b aが真であればaを返すb,簡単に理解するとandはa a aが正しいと判断してbを判断し続け,bもbtrueを正しく返すとif(a and b)がtrueとなり,これも実際には&&の使用原理の一つであり,aが偽であればfalseが直接a if(a and b)に戻るのがfalseである.or同理| 賦値方式1:複数の変数が同時に賦値され、複数の変数(変数個数が値個数より多い)がnilにデフォルト設定され、少ない変数(変数個数が値個数より少ない)が処理されず、 をタイプ混在させることができる.ローカル変数はlocal修飾で宣言され、メモリはスタック上にあり、1つの関数、コードブロック{}内の関数、コードブロックが終了し、メモリは自動的に を解放する.グローバル変数はスタック上にあり、いつでも作成でき、プログラムが終了し、メモリが自動的に解放される 制御文にif for whereがありswitch構造がない 制御文では、(){}{指代:then}指代:end を書く必要はありません.ループ構造while doend、中には()および+-+=類似の演算子が書けない ループ構造forも書く必要はない()また、最初の付与に加えて、デフォルトの書き込みを省略して<=+xxまたは>=-xx と書くこともできます.関数の戻り値は、他の言語と同様に、値、変数を返すことができます.しかし、異なるのは、複数の変数を同時に返し、複数の付与 を行うことである. tableは配列の形式、辞書の形式、配列辞書が同時に混合する形式 を有することができる. print()印刷では、デフォルトの改行 が行われます.#番配列は配列コンテナtableを計算する下付き個数であり、luaの配列コンテナ下付きは1からインクリメントを計算し、辞書にはkey要素 は含まれない.には2つの遍歴構造pairs,ipairsがあり、1つ目はすべての要素を遍歴し、2つ目はkeyタイプのない要素のみを遍歴し(辞書を遍歴しない)、nil を返すことはできません.
タイプ変換tonumber()tostring()
論理演算子
どうじわりあて
関数とローカル変数
せいぎょぶん
関数の書き方
table配列、辞書、ミックス
遍歴する
タイプ変換tonumber()tostring()
if tonumber("123") == 123 then
print(" ")
else
print(" ")
end
論理演算子
num1 = nil
num2 = 123
result = num1 and num2
print(result)
result2 = num1 or num2
print(result2)
print(not num1) -- nil-> ->true
print(not num2) -- -> ->false
どうじわりあて
num1, num2 , num3 = "asd" ,'sdfasdf', 123, 534
print(num1,num2,num3)
関数とローカル変数
function Func( )
local num1 = 100
num2 = 10
end
Func();
print(num1)
print(num2)
せいぎょぶん
num = 75
if num < 60 then
print("num < 60")
print(";-)")
elseif num > 70 and num < 75 then --elseif ,
print("num > 70 and num < 75")
elseif num < 60 or num >= 75 then
print("num < 60 or num >= 75") --
else
print("num ?")--
end
--while
sum = 0
count = 1
while count <= 5 do
sum = sum + count
count = count + 1
end
print(sum) -- 1 2 3 4 5
--for
for num = 1,10,2 do
print(num) -- 1 3 5 7 9
end
for num2 = 10 ,0, -2 do
print(num2) -- 10 8 6 4 2 0
end
関数の書き方
function funcA()
local num1 = 10
local num2 = 20
print(num1+num2)
end
funcA() --30
--
function funcB()
return 10 > 100
end
a = funcB()
print(a) -- false
print(funcB()) -- false
function funcC()
return 100,200,"3"
end
num3,num4,num5 = funcC()
print(num3..num4..num5)--1002003
print(funcC())--100 200 3 --
num6,num7,num8 = funcC(),1
print(num6..num7)
print(num8)
function funcD(a,b,c)
return a + b + c
end
result = funcD(1,2,3)
print(result)
print(funcD(2,2,8))
-- > ,
--
-- ...
function funcE( ... )
-- ( )
local args = {...}
--#:
for i = 1 , #args do
print(args[i])
end
end
funcE(1,2,"Hello",4,5)
table配列、辞書、ミックス
--
t1 = {" "," "," "," "}
print(t1[3])
--
--key ,
t2 = {name="Young",age = 23,sex = "girl"}
print(t2.name)
print(t2["name"])
t2.sex = "boy"
print(t2.sex)
--
t3 = {name = "AK"," ",age = 35," "}
print(t3.name) --AK
print(t3[1]) --
遍歴する
-- paris
for key ,value in pairs(t1) do
print(key.." : "..value)
end
-- ipairs , , key ,
for key ,value in ipairs(t1) do
print(key.." : "..value)
end