Menu
Coddy logo textTech

混合形状のテーブル

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、メソッドについてさらに詳しく掘り下げます。

challenge icon

チャレンジ

簡単

3つのフィールド(name: stringscore: numberactive: boolean)を持つ shape の型エイリアス Player を定義します。

名前が "Rio"、スコアが 1500activetrue に設定された local player: Playercreate します。

それぞれ新しい line で以下を出力(print)します:

  1. playername
  2. playerscore
  3. playeractive フラグ
  4. フィールドから文字列補間(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 を出力し、次に補間されたサマリー行を出力する
quiz icon腕試し

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

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