\n |
[ トップページ ]
[ ____CommandPrompt ]
[ ____JScript ]
[ ____MySQL ]
[ ____Cygwin ]
[ ____Java ]
[ ____Emacs ]
[ ____Make ]
[ ____Perl ]
[ ____Python ]
[ ____OpenGL ]
[ ____C# ]
[ ____StyleSheet ]
[ ____C++ ]
[ ____Winsock ]
[ ____Thread ]
[ ____VisualStudio ]
[ ____C ]
[ ____Win32API ]
[ ____Lua ]
[ ____PhotoShop ]
ヘッダ検索
■ 配列(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
■ 値と型
[ 変数は型をもたず ], [ 値が型をもつ ] -> つまり 型自身はある.
変数には[ 宣言 ]は不要. -> 変数には型という概念がないから.
代入, 引数わたし, 関数の返値は すべて [ 参照 ]
|
|