Mapの宣言とアクセス
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 16/80。
型付きマップの宣言は、これまで書いてきたテーブルコンストラクターと同じように見えます。注釈によってキーと値の型を指定するだけです。
local stock: {[string]: number} = {apples = 12, bananas = 5}読み取りと書き込みには、慣れ親しんだインデックス指定を使います。有効な識別子であるキーの場合、stock.applesとstock["apples"]は同じエントリーを参照します。角括弧形式は、空白を含むキーや変数に格納されたキーにも使えます。
stock["cherries"] = 20 -- 新しい要素を追加
stock.bananas = 8 -- 既存の要素を更新
print(stock["apples"]) -- 12
print(stock["plums"]) -- nil: 一度も設定されていない型チェッカーはすべての書き込みをチェックします。stock["apples"] = "many"は、"many"が数値ではないためエラーとして検出されます。また、キーは文字列でなければならないため、キーに数値を使うとエラーとして検出されます。
エントリーを削除するには、そのキーにnilを代入します。stock["bananas"] = nilとするとエントリーは完全に削除され、その後の読み取りではnilが返されます。個別の削除関数はありません。これはLuaで標準的な書き方であり、マップでも型チェックに通ります。
チャレンジ
簡単学用品の型付きマップを保持しましょう。
local stock: {[string]: number} = {pens = 40, rulers = 15}を宣言します。stock["erasers"] = 25を追加し、rulersを10に変更します。pens、rulers、erasers、glueの在庫を、1行に1つずつ出力します。
コードを実行を押します。出力には40、10、25、nilが表示されます。
自分で試してみよう
-- 1) pens = 40、rulers = 15 を持つ stock: {[string]: number} を宣言する
-- 2) erasers = 25 を追加し、rulers を 10 に変更する
-- 3) pens、rulers、erasers、次に glue を出力する
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ