Lua 5.3——各種変数と値を素早く把握する
14718 ワード
Q:Luaの基本変数タイプは?
A:
nil, boolean, number, string, userdata, function, thread, and table.
type()は変数のタイプを取得できます.
Q:Luaの中で何が本当なのか、何が偽物なのか.
A:
Q:Luaにおけるエスケープシーケンス?
A:Cと同じです.
a bellb back spacef form feed newliner carriage returnt horizontal tabv vertical tabbackslashdouble quotesingle quote[left square bracket]right square bracketddd ASCIIコードを使用して文字を指定
Q:Luaではどのように文字列を作成しますか?
A:1、使用
2、使用
3、使用
Q:Luaの数字と文字列の変換方法は?
A:luaは、演算演算演算に関連する操作を前提として、実行中に文字列を動的に数値に変換することをサポートします.
luaはまた、ここで文字列が必要であることを発見し、数値が与えられることを前提として、実行中に数値を文字列に動的に変換することもサポートします.
より規範的な変換方式はtonumber()およびtostring()を使用することであり、
> print(type(tonumber(“10”))) number > print(type(tostring(10))) string
Q:Luaのtableは何ですか.
A:配列に似ていますが、配列よりも強力です.tableには任意のデータを格納し、keyとして数字または文字列を使用できます.tableのストレージスペースはダイナミックで、任意にメンバーを追加できます.
Q:tableの作成と使用方法
A:
Q:a{x},a{“x”},a{[x]},a{[“x”]},a.x,a.”x”,a[x],a[“x”],a.x,a.”x”?
A:
まとめ:ない
Q:「table」の各連続数字索引の要素をどのように遍歴しますか?
A:
Q:「table」のすべての要素をどのように遍歴しますか?
A:
追加:
1、lua変数に格納されている文字列の任意の文字は、プログラム実行中に変更できません.
2、数字と文字列は自動的に変換できるが、数字と文字列は同等ではない.
3、Luaのパッケージもtableで表しています.たとえば
このような実装方式は実際の使用ではほとんど使われず、チェーンテーブルのより良い実装方式はarraysであり、後で提案される.6、「table」を0から始めたいなら(やはり提案しないで、1から始めることをお勧めします)、簡単です.
7、table初期化データの最後の要素の後ろのカンマは許可されています.
8、table初期化データ間のカンマはセミコロンで代用できます.ただし、セミコロンは通常、「list part」や「record part」など、異なるタイプの領域を区別するために使用されます.
9、tableを再帰的に実現する.unpack(),
A:
nil, boolean, number, string, userdata, function, thread, and table.
type()は変数のタイプを取得できます.
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string
Q:Luaの中で何が本当なのか、何が偽物なのか.
A:
false
およびnil
偽と判定され、その他の値はすべて真と判定されます.ここで特に注意したいのは、C言語とは異なり0
真と判定されることです.Q:Luaにおけるエスケープシーケンス?
A:Cと同じです.
a bellb back spacef form feed newliner carriage returnt horizontal tabv vertical tabbackslashdouble quotesingle quote[left square bracket]right square bracketddd ASCIIコードを使用して文字を指定
Q:Luaではどのように文字列を作成しますか?
A:1、使用
""
または''
、a = "string"
b = 'another string'
2、使用
[[...]]
、--[[ "\" ,
"]]"。 。]]
page = [[
a
b
c
]]
3、使用
..
2つの値を1つの全体の文字列に接続することができ、--[[ , ".." ".." 。
".." "." 。
,".." 。]]
print(10 .. 20)
print("Hello" .. "World")
Q:Luaの数字と文字列の変換方法は?
A:luaは、演算演算演算に関連する操作を前提として、実行中に文字列を動的に数値に変換することをサポートします.
print("10" + 1) --> 11
print("hello" + 1) --> ERROR (cannot convert "hello")
luaはまた、ここで文字列が必要であることを発見し、数値が与えられることを前提として、実行中に数値を文字列に動的に変換することもサポートします.
print(10 .. 20) --> 1020
print(10 .. "" == "10") --> true
より規範的な変換方式はtonumber()およびtostring()を使用することであり、
> print(type(tonumber(“10”))) number > print(type(tostring(10))) string
Q:Luaのtableは何ですか.
A:配列に似ていますが、配列よりも強力です.tableには任意のデータを格納し、keyとして数字または文字列を使用できます.tableのストレージスペースはダイナミックで、任意にメンバーを追加できます.
Q:tableの作成と使用方法
A:
-- table, a 。
a = {}
-- table "nil"。
print(a[1]) --> nil
-- table 。
days = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
-- table。
--[[ !table 1 。 0 0 ,
Lua 1 , 。]]
print(days[1]) --> "Sunday"
-- table 。
coor = {x = 10, ["y"] = 20, [21] = 300}
-- table。
--[[ ! coor[1] 。
1 , coor["x"] coor[1]。]]
print(coor["x"]) --> 10
print(coor["y"]) --> 20
print(coor[1]) --> nil
print(coor[21]) --> 300
-- table。
polyline = {color="blue", thickness=2, npoints=4,
{x=0, y=0},
{x=-10, y=0},
{x=-10, y=1},
{x=0, y=1}
} -- polyline[1] polyline[4] 4 table。
print(polyline[2].x) --> -10
Q:a{x},a{“x”},a{[x]},a{[“x”]},a.x,a.”x”,a[x],a[“x”],a.x,a.”x”?
A:
a = {"x" = one} --> ERROR
x = 2
a = {x = "one", "two", "three"}
print(a["x"]) --> one
print(a[1]) --> two
print(a[x]) --> three
print(a.x) --> one
print(a."x") --> ERROR
a = {["x"] = "one", "two", [x] = "three"}
-- 。
まとめ:ない
a{"x"}
この使い方;ありませんa."x"
この使い方;a["x"]
a.x
と同じ;a{x}
a{["x"]}
と同じ;{"red", "green", "blue"}
{[1]="red", [2]="green", [3]="blue"}
と同じ.Q:「table」の各連続数字索引の要素をどのように遍歴しますか?
A:
a = {1, 2, x = 7, 3, [9] = 100}
--[[ ipairs() ,table key value。
ipairs() , "[9]",
, "x"。]]
for i,val in ipairs(a) do
print("[" .. i .. "] = ", val)
end
--[[ the result.
[1] = 1
[2] = 2
[3] = 3
]]
-- table.unpack table value。
--[[ table.unpack() table value。
table.unpack() , "[9]",
, "x"。]]
print(table.unpack(a))
--[[ the result.
1 2 3
]]
Q:「table」のすべての要素をどのように遍歴しますか?
A:
a = {1, 2, x = 7, 3}
-- pairs() ,table key value。
for i,val in pairs(a) do -- pairs() table key value。
print("[" .. i .. "] = ", val)
end
--[[ the result.
[1] = 1
[2] = 2
[3] = 3
[x] = 7
[9] = 100
]]
追加:
1、lua変数に格納されている文字列の任意の文字は、プログラム実行中に変更できません.
a = "one string"
b = string.gsub(a, "one", "another") -- one another
print(a) --> one string
print(b) --> another string
2、数字と文字列は自動的に変換できるが、数字と文字列は同等ではない.
print(10 == "10") --> false
3、Luaのパッケージもtableで表しています.たとえば
io.read()
実際にioテーブルのkeyがreadである関数を呼び出す.4、変数がtableの参照を保存していない場合、luaはtableが占めるメモリ領域を自動的に解放します.5、tableでチェーンテーブルを実現し、-- table 。
list = nil
for line in io.lines() do
list = {next=list, value=line}
end
-- 。
l = list
while l do
print(l.value)
l = l.next
end
このような実装方式は実際の使用ではほとんど使われず、チェーンテーブルのより良い実装方式はarraysであり、後で提案される.6、「table」を0から始めたいなら(やはり提案しないで、1から始めることをお勧めします)、簡単です.
days = {[0]="Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"}
7、table初期化データの最後の要素の後ろのカンマは許可されています.
a = {[1]="red", [2]="green", [3]="blue",}
8、table初期化データ間のカンマはセミコロンで代用できます.ただし、セミコロンは通常、「list part」や「record part」など、異なるタイプの領域を区別するために使用されます.
{x=10, y=45; "one", "two", "three"}
9、tableを再帰的に実現する.unpack(),
function unpack(t, i)
i = i or 1
if t[i] ~= nil then
return t[i], unpack(t, i + 1)
end
end