Luaにおける配列の概念の説明
配列は順序付けられたオブジェクトの装置であり、行の集まりを含む単一の2次元配列や、複数の行と列を持つ多次元配列があります。
Luaでは、配列は整数によるインデックス・テーブルを使って実装されています。配列のサイズは固定ではなく、メモリに制約される必要性に基づいて大きくすることができます。
一次元配列
一次元配列は単純なテーブル構造で表すことができ、単純なforループで初期化、読み込みが可能です。これは以下の例で示されています。
for i= 0, 2 do
print(array[i])
end
上記のコードを実行すると、次のような出力が得られます。
Lua
Tutorial
上のコードでわかるように、インデックスが存在しない配列の要素にアクセスしようとすると、nilが返されます。Luaでは通常、インデックスは1から始まりますが、インデックス0や0未満のオブジェクトを作成することも可能です。以下、負のインデックスを持つ配列の使い方を示します。配列はforループで初期化します。
for i= -2, 2 do
array[i] = i * 2
end
for i = -2,2 do
print(array[i])
end
上記のコードを実行すると、次のような出力が得られます。
-2
0
2
4
多次元配列
多次元配列は、2つの方法で実装することができます。
- 配列の配列
- 制御インデックスによる一次元配列
3,3多次元配列の場合、配列を用いた例を以下に示します。
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- Accessing the array
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
上記のコードを実行すると、次のような出力が得られます。
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
-- Accessing the array
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
上記のコードを実行すると、次のような出力が得られます。
2
3
2
4
6
3
6
9
上の例でわかるように、データはインデックスに基づいて格納されます。また、要素をスパースに置くことができます。これは、luaが実装されている方法で動作するマトリックスです。Luaでは0値を保存しないので、他のプログラミング言語が特殊なテクニックを使うのに比べ、Luaではどんな特殊なテクニックでも多くのメモリを節約することが可能です。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン