Menu
CoddyTech

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で標準的な書き方であり、マップでも型チェックに通ります。

challenge icon

チャレンジ

簡単

学用品の型付きマップを保持しましょう。

  1. local stock: {[string]: number} = {pens = 40, rulers = 15}を宣言します。
  2. stock["erasers"] = 25を追加し、rulersを10に変更します。
  3. 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オンラインコンパイラ