形状が混在するテーブル
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 18/80。
配列は1つの型の値を多数保持し、マップは1つのキーの型と1つの値の型を保持します。しかし、Luaのテーブルで最もよく使われるのは、名前付きフィールドに複数の型が混在するものです。たとえば、文字列の名前、数値のスコア、真偽値のフラグを持つプレイヤーです。Luauでは、これらを各フィールドとその型を列挙したテーブル型、つまり形状として型付けします。
type Point = {x: number, y: number}
local origin: Point = {x = 0, y = 0}
print(origin.x)typeキーワードは型エイリアスを作成します。形状に付ける、再利用可能な名前です。これは型チェッカーでのみ使われ、実行時にPointという名前の値は作成されません。フィールドごとに異なる型を指定できます。
type Player = {name: string, score: number, active: boolean}
local player: Player = {name = "Rio", score = 1500, active = true}
print(`{player.name} has {player.score} points`)形状を宣言すると、型チェッカーはplayer.scoreが数値だと認識し、間違いを早期に検出します。たとえば、player.scroeのようなタイプミス(そのようなフィールドはありません)や、player.score = "high"の代入(型が違います)です。ここではまず基本を学びます。後の章では、形状、オプションのフィールド、メソッドについてさらに詳しく学びます。
チャレンジ
簡単形状型を使ってプレイヤーを記述しましょう。
type Player = {name: string, score: number, active: boolean}と記述します。local player: Player = {name = "Kai", score = 900, active = false}を作成します。player.activeを出力し、次に`{player.name} has {player.score} points`を出力します。
Run Codeを押すと、出力にfalseとKai has 900 pointsが表示されます。
自分で試してみよう
-- 1) type Player = {...}
-- 2) local player: Player = {...}
-- 3) activeフラグを出力し、次に要約行を出力する
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ