配列(Array)





配列


POINT 配列はテーブルのキーを数値にすることで利用する。 テーブルの特殊系にすぎない。 . Table{ Arr{} } -- Constructor 起動( この処理は必須 ) a = {};
-- list 表記 -- 初期化リストつき local a = { "x", "y", "z" }; print( a[1] );
数値 index として扱う
a = {} -- 追加する a[ #a + 1 ] = "a" a[ #a + 1 ] = "b" -- イテレートする for i = 1, #a do local s = a[ i ] print( s ) end
配列の要素数をとるには 単項演算子( # ), table.getn(), table.maxn() をつかう
-- 3 a = { 2, 5, 6 } print( #a ) -- 3 a = { "a", "b", "c" } table.getn( a ); -- 3 a = { "a", "b", "c" } table.maxn( a );
WARNING テーブル内の最大の数値インデックス値を返す。 インデックスに数値が使われていない場合は 0 が返る
-- 0 local a = { a=1, b=2 } print( table.maxn( a ) ) print( table.getn( a ) ) print( #a ) )
maxn はテーブル内の最大の数値インデックス値を返す。 # , getn() は連続している最大の数値インデックス値を返す。
local a = {} a[1] = 0; a[2] = 0; a[100] = 0; -- 2 print( #a ) print( table.getn( a ) ) -- 100 print( table.maxn( a ) )
a[ "key" ] = 10; // 文字 KEY による代入 a[ 3 ] = 20; // 数値を使用すれば, 配列としても可能 b = a; // 参照. print(b.x) // == b["x"]; BAD b.0
b.y = "test"; print( b.y ); // index 1 の値を削除. b[3] = nil; POINT 開始 idx == 1 要素数は可変. 使う前の定義が必要 -> arr = {}; 空要素を取得しようとすると, nil が返る。 -- 疎行列 -- ( 配列index(索引)は連続している必要はない ) a[1] = 0; a[2] = 0; a[4] = 0; a[5] = 0; print( #a ) = 2; 変数と同じで、値のないインデックスを参照すると nil が返る。
a = { "x", "y", "z" }; -- nil print( a[4] );



追加


table.insert() でテーブルの末尾のインデックスに追加する。 テーブルの添え字は数値インデックスになる。
tbl = {} -- index 1 に追加 table.insert(tbl, "A") -- index 2 table.insert(tbl, "B") -- index3 table.insert(tbl, "C")
index を指定した場合は、その位置に追加されて残りは後ろにシフトされる。
-- D, A, B, C table.insert(tbl, 1, "D")



削除


SYNTAX table.remove( table, number )
local tbl = {} table.insert(tbl, "foo") table.insert(tbl, "bar") -- 要素ではなく index を指定する table.remove( tbl, "foo" ); local tbl = { 2, 4, 6 } table.remove( tbl, 1 ); print ( #tbl )
-- イテレートする。 for i=1, #a, 1 do print(a[i]) end table.foreach( t, func ); -- call func( idx, val ); WARNING 間違った field を指定した場合は, nil がかえるので, spellmiss が素通りする可能性あり.


結合


SYNTAX table.concat (table [, sep [, i [, j ) 要素を指定した文字列で結合して返す
a = {1,2,3} -- 1__2__3 table.concat( a, "__" )
結合する要素の数を指定する
-- 1__2 table.concat( a, "__", 1, 2 )



2次元配列


1次元配列を利用して, 2次元配列を作成する. 配列の要素を配列にする。
m = {}; m[1] = {}; m[2] = {}; m[1][1] = 10; print( m[1][1] );



Lua 言語の字句の構成


Lua が使用する, 内部 global変数. _VERSION


値と型


[ 変数は型をもたず ], [ 値が型をもつ ] -> つまり 型自身はある. 変数には[ 宣言 ]は不要. -> 変数には型という概念がないから. 代入, 引数わたし, 関数の返値は すべて [ 参照 ]