English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Lua 配列

配列は、同じデータ型の要素が一定の順序で並んだ集合で、一次元配列や多次元配列が含まれます。

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値の発生を避け、メモリ使用を節約するのに役立ちます。