Menu
Coddy logo textTech

マップの宣言とアクセス

CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 16/73。

typed map の宣言は、これまでずっと書いてきたテーブルコンストラクターのように見えます。アノテーションによって key と value の型が確定します。

local stock: {[string]: number} = {apples = 12, bananas = 5}

読み取りと書き込みには、使い慣れたインデックスアクセスを使用します。有効な識別子である key については、stock.applesstock["apples"] は同じ entry にアクセスします。角括弧形式は、スペースを含む key や変数に格納された key にも対応します。

stock["cherries"] = 20   -- 新しいエントリを追加
stock.bananas = 8        -- 既存のものを更新
print(stock["apples"])  -- 12
print(stock["plums"])   -- nil — 設定されていない

型チェッカーはすべての書き込みを監視します。stock["apples"] = "many" には、"many" が number ではないため警告が出ます。また、key は string でなければならないため、key として number を使用した場合にも警告が出ます。

entry を削除するには、その key に nil を代入します。stock["bananas"] = nil は entry を entirely removes し、その後の読み取り結果は nil になります。専用の削除関数はありません。これは標準的な Lua の慣用法であり、map 上でも型チェックされます。

challenge icon

チャレンジ

簡単

apples = 12bananas = 5 で初期化した型付き map stock: {[string]: number} を作成します。その後:

  1. 20 の新しいエントリ cherries を追加する
  2. bananas8 に更新する

最後に、それぞれを独自の行に出力します:

  1. apples の在庫
  2. bananas の在庫
  3. cherries の在庫
  4. plums の在庫:決して設定していないキー

自分で試してみよう

-- ここにコードを書いてください
-- 1) stock: {[string]: number} を宣言し、apples = 12、bananas = 5 とする
-- 2) cherries = 20 を追加し、bananas を 8 に更新する
-- 3) apples、bananas、cherries、それから plums を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Luau入門のすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ