English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
配列は、同じデータ型の要素が一定の順序で並んだ集合で、一次元配列や多次元配列が含まれます。
Luaの配列のインデックスキーは整数で表現できますが、配列のサイズは固定ではありません。
一次元配列は最もシンプルな配列で、その論理構造は線形表です。一次元配列はforループを使用して配列の要素を出力できます。以下はその例です:
array = {"Lua", "チュートリアル"} for i= 0, 2 do print(array[i]) end
上記のコードの実行結果は以下の通りです:
nil Lua チュートリアル
あなたが見たように、整数インデックスを使用して配列要素にアクセスできますが、存在しないインデックスはnilを返します。
Luaのインデックス値は 1 始まりですが、0から始めることもできます。
これに加えて、負の数を配列インデックス値としても使用できます:
array = {} for i= -2, 2 do array[i] = i *2 end for i = -2,2 do print(array[i]) end
上記のコードの実行結果は以下の通りです:
-4 -2 0 2 4
多次元配列は、配列に配列や一次元配列が含まれており、そのインデックスキーが配列を指す場合があります。
以下は三行三列の配列行列多次元配列の例です:
-- 配列の初期化 array = {} for i=1,3 do array[i] = {} for j=1,3 do array[i][j] = i*j end end -- 配列にアクセス for i=1,3 do for j=1,3 do print(array[i][j]) end end
上記のコードの実行結果は以下の通りです:
1 2 3 2 4 6 3 6 9
異なるインデックスキーの三行三列の配列行列多次元配列:
-- 配列の初期化 array = {} maxRows = 3 maxColumns = 3 for row=1,maxRows do for col=1,maxColumns do array[row*maxColumns +col] = row*col end end -- 配列にアクセス for row=1,maxRows do for col=1,maxColumns do print(array[row*maxColumns +col]) end end
上記のコードの実行結果は以下の通りです:
1 2 3 2 4 6 3 6 9
あなたが見たように、上記の例では、配列に指定されたインデックス値が設定され、nil値の発生を避け、メモリ使用を節約するのに役立ちます。