Lua テーブル型のサンプル

Luaのテーブル型のサンプルです。

確認環境
・Lua 5.4.1

目次

サンプル テーブルに値を設定する(初期化)
  テーブルに添え字を指定して値を設定する
  テーブルの値をfor文で取得する
  要素数を取得する
  テーブルの値を変更する
  テーブルの値を追加する
  テーブルの値を削除する
  テーブルの値をソートする
  連想配列(キーに任意の文字列)
  連想配列をfor文で取得する
  2次元配列を作成する

テーブルに値を設定する(初期化)

tbl = {"赤","黄","青"}

print(tbl[1]) -- 赤
print(tbl[2]) -- 黄
print(tbl[3]) -- 青

テーブルの設定は、値を波括弧(なみかっこ)で囲みます。
最初の添字は1から始まります。

テーブルに添え字を指定して値を設定する

tbl = {}
tbl[1] = "赤"
tbl[2] = "黄"
tbl[3] = "青"

print(tbl[1]) -- "赤"
print(tbl[2]) -- "黄"
print(tbl[3]) -- "青"

2~4行目は、添字を指定して値を設定しています。

テーブルの値をfor文で取得する

tbl = {"赤","黄","青"}

for i = 1 , #tbl do
	print(tbl[i]) -- 赤 黄 青が出力される
	print(i) -- 1 2 3が出力される
end

for文は、指定した値の分処理を繰り返します。

要素数を取得する

tbl = {"赤","黄","青"}

print(#tbl) -- 3

要素数はシャープ(#)を指定します。

テーブルの値を変更する

tbl = {"赤","黄","青"}
tbl[2] = "オレンジ"

print(tbl[1]) -- "赤"
print(tbl[2]) -- "オレンジ"
print(tbl[3]) -- "青"

値の変更は、添字を指定して値を代入します。

テーブルの値を追加する

tbl = {"赤","黄","青"}
table.insert(tbl, "オレンジ")

print(tbl[1]) -- "赤"
print(tbl[2]) -- "黄"
print(tbl[3]) -- "青"
print(tbl[4]) -- "オレンジ"

table.insertは、末尾に値を追加します。

テーブルの値を削除する

tbl = {"赤","黄","青"}
table.remove(tbl)

print(tbl[1]) -- "赤"
print(tbl[2]) -- "黄"
print(tbl[3]) -- nil

removeは、末尾の値を削除します。

テーブルの値をソートする

a = {100,2,99}
table.sort(a)

print(a[1]) -- 2
print(a[2]) -- 99
print(a[3]) -- 100

b = {"da","abb","pccc"}
table.sort(b)

print(b[1]) -- "abb"
print(b[2]) -- "da"
print(b[3]) -- "pccc"

sortは、値を並び替えます。

連想配列(キーに任意の文字列)

tbl = {c1="赤",c2="黄",c3="青"}

print(tbl["c1"]) -- 赤
print(tbl["c2"]) -- 黄
print(tbl["c3"]) -- 青

tbl["c4"] = "オレンジ"

print(tbl["c4"]) -- オレンジ

1行目のキー(c1,c2,c3)にはダブルコーテーション(")がつきませんが
3行目以降のキーの指定には、ダブルコーテーションが必要です。

連想配列をfor文で取得する

tbl = {c1="赤",c2="黄",c3="青"}

for a,b in pairs(tbl) do
	print(a,b) -- c2 黄 c1 赤 c3 青
end

4行目は、取得した値を表示していますが表示する順番は毎回変わります。

2次元配列を作成する

tbl = {}
tbl[1] = {}
tbl[2] = {}

tbl[1][1] = "赤1"
tbl[1][2] = "黄1"
tbl[1][3] = "青1"
tbl[2][1] = "赤2"
tbl[2][2] = "黄2"
tbl[2][3] = "青2"

print(tbl[1][1]) -- "赤1"
print(tbl[2][1]) -- "赤2"

1行目は、空のテーブルをセットしています。
2,3行目は、1行目のテーブルに添え字を指定して空のテーブルをセットしています。

関連の記事

Lua if文のサンプル
Lua for文 処理を繰り返すサンプル(break/continue)
Lua while文のサンプル(break/continue)

△上に戻る