マップの宣言とアクセス
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 16/73。
typed map の宣言は、これまでずっと書いてきたテーブルコンストラクターのように見えます。アノテーションによって key と value の型が確定します。
local stock: {[string]: number} = {apples = 12, bananas = 5}読み取りと書き込みには、使い慣れたインデックスアクセスを使用します。有効な識別子である key については、stock.apples と stock["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 上でも型チェックされます。
チャレンジ
簡単apples = 12 と bananas = 5 で初期化した型付き map stock: {[string]: number} を作成します。その後:
- 値
20の新しいエントリcherriesを追加する bananasを8に更新する
最後に、それぞれを独自の行に出力します:
applesの在庫bananasの在庫cherriesの在庫plumsの在庫:決して設定していないキー
自分で試してみよう
-- ここにコードを書いてください
-- 1) stock: {[string]: number} を宣言し、apples = 12、bananas = 5 とする
-- 2) cherries = 20 を追加し、bananas を 8 に更新する
-- 3) apples、bananas、cherries、それから plums を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ