Lua配列


配列は、特定の順序で配置された同じデータ型の要素のコレクションです。1 次元配列または多次元配列にすることができます。

Lua配列のインデックスキー値は整数で表現でき、配列のサイズは固定ではありません。


1次元配列

1次元配列は最も単純な配列であり、その論理構造は線形テーブルです。次の例に示すように、1 次元配列では for ループを使用して配列内の要素をループアウトできます:

array = {"Lua", "Tutorial"}

for i= 0, 2 do
   print(array[i])
end

上記のコード実行出力は次のとおりです:

nil
Lua
Tutorial


ご覧のとおり、整数を使用できます。配列要素にアクセスするためのインデックス。既知のインデックスに値がない場合は、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

多次元配列

多次元配列とは、配列に配列または対応する配列が含まれていることを意味します。 1次元配列のインデックスキーに。

以下は 3 行 3 列の多次元配列です:

-- 初始化数组
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

3 行 3 列の多次元配列インデックス キー:

-- 初始化数组
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 値を回避でき、ヘルプが得られます。メモリスペースを節約します。