Lua入門学習チュートリアル(一)Table関数ライブラリ
5377 ワード
table.concat( tablename, “, “, start_index, end_index )
接続tableの最初のインデックスの連続する複数の例
出力結果
例えば
結果出力
table.insert(table, pos, value)
指定した場所に項目を挿入し、指定した場所がない場合は末尾に挿入します.
出力結果
table.maxn(table)
tableの最大インデックス値の取得
#table
最初の連続インデックスの最大値を取得
たとえば
出力結果
table.remove(table,pos)
指定した位置の要素を削除し、posが指定されていない場合は、最初の連続インデックスの最後の要素を削除します.注意エレメントが削除されると、後ろのエレメントが前に移動します.
たとえば
出力結果
posを指定せずにmytable[3]が削除されたことがわかります
例えば
出力結果
mytable[1]を削除すると、後ろの要素が前に移動していることがわかります.
多くの人はmytable[1]=nilのように要素を削除するのに慣れていますが、問題が発生します.mytable[1]=nilですが、連続インデックスが切れています.連続インデックスに対する操作の一部は実行できません.例えば次の例
出力結果は:何もなくて、空いています
連続インデックスでない他の項目については、nilに設定します.たとえば、次のようにします.
出力結果
table.sort( tablename, sortfunction )
tableをソートします.softfunctionソートアルゴリズムを指定しない場合、デフォルトは昇順ソートです.
出力結果
ソート関数を自分で指定できます.例えば、ここで降順にソートします.
結果出力
table.foreachi(mytable,function( i,v ))
インデックス1から始まるアイテムを巡回します.インデックスは数値ではありません.たとえば、
結果出力
ここで注意:tableのインデックスの同じ値が上書きされますよ
table.foreach(mytable,function( k,v )
すべてのアイテムを巡回します.たとえば
結果出力
接続tableの最初のインデックスの連続する複数の例
local mytable={"this","is","game"}
-- 、 index( 1)、 index( maxn)
print(table.concat( mytable))
-- , index, index
print(table.concat( mytable, "-"))
-- , index, index
print(table.concat( mytable, "-",2))
-- , index, index
print(table.concat( mytable, "-", 1, 2 ))
出力結果
thisisgame
this-is-game
is-game
this-is
例えば
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501"
}
print(table.concat( mytable,"-"))
結果出力
a-b-15
table.insert(table, pos, value)
指定した場所に項目を挿入し、指定した場所がない場合は末尾に挿入します.
local mytable={"is","game"}
table.insert(mytable,"happly")
table.insert(mytable,"play")
table.insert(mytable,1,"this")
print(table.concat( mytable, "-"))
出力結果
this-is-game-happly-play
table.maxn(table)
tableの最大インデックス値の取得
#table
最初の連続インデックスの最大値を取得
たとえば
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501"
}
print(#mytable)
print(table.maxn(mytable))
出力結果
3
101
table.remove(table,pos)
指定した位置の要素を削除し、posが指定されていない場合は、最初の連続インデックスの最後の要素を削除します.注意エレメントが削除されると、後ろのエレメントが前に移動します.
たとえば
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
table.remove(mytable)
for k,v in pairs(mytable) do
print(k,v)
end
出力結果
1 a
2 b
m_name ddddd
100 1500
101 1501
posを指定せずにmytable[3]が削除されたことがわかります
例えば
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
table.remove(mytable,1)
for k,v in pairs(mytable) do
print(k,v)
end
出力結果
1 b
2 15
m_name ddddd
100 1500
101 1501
mytable[1]を削除すると、後ろの要素が前に移動していることがわかります.
多くの人はmytable[1]=nilのように要素を削除するのに慣れていますが、問題が発生します.mytable[1]=nilですが、連続インデックスが切れています.連続インデックスに対する操作の一部は実行できません.例えば次の例
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
mytable[1]=nil
for i,v in ipairs(mytable) do
print(i,v)
end
出力結果は:何もなくて、空いています
連続インデックスでない他の項目については、nilに設定します.たとえば、次のようにします.
local mytable=
{
[1]="a",
[2]="b",
[3]="15",
[100]="1500",
[101]="1501",
m_name="ddddd"
}
mytable[100]=nil
for k,v in pairs(mytable) do
print(k,v)
end
出力結果
1 a
2 b
3 15
m_name ddddd
101 1501
table.sort( tablename, sortfunction )
tableをソートします.softfunctionソートアルゴリズムを指定しない場合、デフォルトは昇順ソートです.
local mytable=
{
1,
3,
4,
2
}
print("before : " .. table.concat( mytable,"-" ))
table.sort( mytable )
print("after : " .. table.concat( mytable,"-" ))
出力結果
before : 1-3-4-2
after : 1-2-3-4
ソート関数を自分で指定できます.例えば、ここで降順にソートします.
local mytable=
{
1,
3,
4,
2
}
print("before : " .. table.concat( mytable,"-" ))
table.sort( mytable ,function( var1,var2 )
-- body
return var1>var2
end)
print("after : " .. table.concat( mytable,"-" ))
結果出力
before : 1-3-4-2
after : 4-3-2-1
table.foreachi(mytable,function( i,v ))
インデックス1から始まるアイテムを巡回します.インデックスは数値ではありません.たとえば、
local mytable=
{
1,
[1]="this",
3,
is="is",
4,
game="game",
2
}
table.foreachi(mytable,function( k,v )
-- body
print(k,v)
end)
結果出力
1 this
2 3
3 4
4 2
ここで注意:tableのインデックスの同じ値が上書きされますよ
table.foreach(mytable,function( k,v )
すべてのアイテムを巡回します.たとえば
local mytable=
{
1,
[1]="this",
3,
is="is",
4,
game="game",
2
}
table.foreach(mytable,function( k,v )
-- body
print(k,v)
end)
結果出力
1 this
2 3
3 4
4 2
is is
game game