web-dev-qa-db-ja.com

Luaで連想テーブルをすばやく初期化するにはどうすればよいですか?

Luaでは、次の方法でテーブルを作成できます。

local t = { 1, 2, 3, 4, 5 }

ただし、連想テーブルを作成したいので、次の方法で作成する必要があります。

local t = {}
t['foo'] = 1
t['bar'] = 2

以下はエラーを出します:

local t = { 'foo' = 1, 'bar' = 2 }

私の最初のコードスニペットと同様にそれを行う方法はありますか?

32
Wookai

これを書く正しい方法はどちらかです

local t = { foo = 1, bar = 2}

または、テーブル内のキーが正当な識別子ではない場合:

local t = { ["one key"] = 1, ["another key"] = 2}
59
bendin

私はあなたがそれをこのように見ればそれが少し良くそして理解できるように働くと信じています

local tablename = {["key"]="value",
                   ["key1"]="value",
                   ...}

次の結果を見つける:tablename.key = value

辞書としてのテーブル

テーブルを使用して、配列のように、数値または順次にインデックスが付けられていない情報を格納することもできます。これらのストレージタイプは、辞書、連想配列、ハッシュ、またはマッピングタイプと呼ばれることもあります。要素のペアにキーと値がある辞書という用語を使用します。キーは、それに関連付けられた値を設定および取得するために使用されます。配列と同じように、table [key] = value形式を使用して要素をテーブルに挿入できることに注意してください。キーは数字である必要はなく、文字列でもかまいません。さらに言えば、他のほぼすべてのLuaオブジェクト(nilまたは0/0を除く)でもかまいません。いくつかのキーと値のペアを含むテーブルを作成しましょう。

t = {Apple = "green"、orange = "orange"、banana = "yellow"} for k、v in pair(t)do print(k、v)end Apple green orangeオレンジバナナイエロー

から: http://lua-users.org/wiki/TablesTutorial

8
Wesker

文字列値と一致する文字列キーを持つ連想配列を初期化するには、次を使用する必要があります

local petFamilies = {["Bat"]="Cunning",["Bear"]="Tenacity"};

しかしない

local petFamilies = {["Bat"]=["Cunning"],["Bear"]=["Tenacity"]};
1
izogfif