混合形状のテーブル
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 18/73。
配列は1つの型の多くの値を保持し、マップは1つのキー型と1つの値型を保持します。しかし、最も一般的なLuaのテーブルでは、named fieldsの中に型が混在します。string型の名前、number型のscore、boolean型のフラグを持つplayerなどです。Luauでは、これらをshapeで型付けします。これは、各fieldとそのownの型を列挙するテーブル型です。
type Point = {x: number, y: number}
local origin: Point = {x = 0, y = 0}
print(origin.x)typeキーワードはtypeエイリアスを作成します。これはshapeに対する再利用可能な名前です。これはcheckerのためだけに存在し、Pointという名前のランタイム値は作成されません。各fieldにはそれぞれ異なる型を指定できます。
type Player = {name: string, score: number, active: boolean}
local player: Player = {name = "Rio", score = 1500, active = true}
print(`{player.name} has {player.score} points`)shapeを宣言すると、checkerはplayer.scoreがnumberであることを認識し、間違いを早期に警告します。たとえばplayer.scroeのような誤字(そのようなfieldは存在しません)や、player.score = "high"の代入(型が違います)です。これが最初の体験です。後の章では、shape、optionalなfield、methodについてさらに詳しく掘り下げます。
チャレンジ
簡単3つのフィールドを持つshapeの型エイリアスPlayerを定義してください:name: string、score: number、active: boolean。
名前"Rio"、スコア1500、activeをtrueに設定したlocal player: Playerを作成してください。
それぞれを別の行に出力してください:
- playerの名前
- playerのスコア
- playerのactiveフラグ
- フィールドから文字列補間を使って作成した、正確な行
Rio has 1500 points
自分で試してみよう
-- ここにコードを書いてください
-- 1) type Player = {name: string, score: number, active: boolean}
-- 2) player を作成: Player = {name = "Rio", score = 1500, active = true}
-- 3) name, score, active を出力し、その後補間されたサマリー行を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ