混合形状のテーブル
CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 18/73。
配列は1つの型の複数の値を保持し、マップは1つのキー型と1つの値型を保持します。しかし、最も一般的なLuaテーブルは、名前付きフィールドのもとで型を混合します。文字列のname、数値のscore、ブーリアンフラグを持つplayerなどです。Luauはこれらをshape(シェイプ)で型付けします。これは、各fieldとその自身のtypeを一覧表示するテーブル型です。
type Point = {x: number, y: number}
local origin: Point = {x = 0, y = 0}
print(origin.x)typeキーワードは型エイリアスを作成します。これは、shapeの再利用可能な名前です。これはチェッカーのためだけに存在します。Pointという名前のランタイム値は作成されません。Fieldsはそれぞれ異なるtypeを持つことができます:
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が宣言されると、チェッカーはplayer.scoreがnumberであることを認識し、早い段階でエラーを検出します。player.scroeのようなスペルミス(そのようなfieldは存在しない)、あるいはplayer.score = "high"の代入(誤ったtype)などです。これは最初の体験に過ぎません。以降の章で、shapes、オプショナルなfields、メソッドについてさらに詳しく掘り下げます。
チャレンジ
簡単3つのフィールド(name: string、score: number、active: boolean)を持つ shape の型エイリアス Player を定義します。
名前が "Rio"、スコアが 1500、active が true に設定された local player: Player を create します。
それぞれ新しい line で以下を出力(print)します:
playerのnameplayerのscoreplayerのactiveフラグ- フィールドから文字列補間(string interpolation)を使用して構築した正確な
lineであるRio has 1500 points
自分で試してみよう
-- ここにコードを書いてください
-- 1) 型 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
プロジェクト:タスクの型定義タスクを追加する関数