5.テーブル

テーブルの初期化

テーブルは、変数の一種です。複数の変数の配列で、主に連続したデータを処理する場合に活用できるでしょう。 初期化は、前述した変数のセクションと同様ですが、代入する内容が異なります。 テーブルは、{}をイコールの後に入れて初期化します。 つまり、テーブル={}となります。実際に変数の値を入れるときは、{}の中に記述します。 値は、普通の変数とほぼ変わりません。2つ以上同じく並ぶ場合は、コンマで区切ります。

a={1, 2, 3}
b={"a", "b", "c"}
c, d={}, {} -- まとめて代入できる

また、最初に示したコード内では、以下のようにテーブルを初期化しています。

local array={
    {w, 0},
    {w/1.5, 0.5},
    {w/3, 1}
}

{}の中に、{}がありますね。テーブルは、またテーブルそのものを入れることができます。 これも、{}が2つ以上同じく並ぶ場合は、コンマで区切ります。 そして、テーブルを入れる階層(次元とも言う)は、恐らくメモリが許す限り制限はないと思われます。

a={ -- 1階層
    {1, 2, 3}, -- 2階層
    {"a", -- 2階層
        {1, 2, 3}, -- 3階層
        {4, 5, 6, -- 3階層
            {"b", "c", "d"} -- 4階層
        },
        {7, 8, 9} -- 3階層
    }
}

値を取り出す

テーブルの値を取り出すには、位置を把握する必要があります。その位置を表すには、番号を使うのが手っ取り早いです。 Luaでは、番号が0からではなく、1から始まります。番号は、[]で囲むので、テーブル[1]となります。 以下のように、値を取り出します。

a={1, 2, 3}
b=a[1] -- aのテーブルの1番目
c=a[2] -- aのテーブルの2番目
d=a[3] -- aのテーブルの3番目

そして、多次元のテーブルの値を取り出すには、目的の位置まで階層を辿るように、順に番号をテーブル[1][1][1]...と記述します。

a={ -- 1次元
    {1, 2} -- 2次元
}

b=array[1][1] -- 2次元の1番目
c=array[1][2] -- 2次元の2番目

また、数値の番号以外に文字列で表すことができます。 文字列の場合は、テーブル['Name']及びテーブル["Name"]、もしくはテーブル.Nameと記述します。

a.['name']=0
a.["name"]=0
a.Name=0

-- どちらとも同等

b.["Name"]["is"]["none"]=0
b.['Name']['is']['none']=0
b.Name.is.none=0

Back to Index