インラインでの形状のアノテーション
CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 37/73。
Luaでは、長年にわたりテーブルをレコードとして使用してきました: local user = {name = "Ana", age = 20}。フィールド名を打ち間違えたり、忘れたり、数値が入るべき場所に文字列を格納したりすることを防ぐものはなく、コードの実行時に初めて判明します。
Luauでは、波括弧の中に各フィールドとその型をリストアップすることで、宣言時にそのようなテーブルのシェイプ(形)を直接記述できます:
local user: {name: string, age: number} = {
name = "Ana",
age = 20,
}すでに知っているテーブル型と比較してみましょう: {number} は配列を記述し、{[string]: number} は任意の文字列キーを持つマップを記述します。シェイプはより正確で、各フィールドを個別に命名し、すべてのフィールドに固有の型を与えます。
シェイプが宣言されると、編集時に型チェッカーがテーブルに対して検証を行います。フィールドの欠落や間違った値の型は、コードが実行される前にフラグが立てられます:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ 型エラー: string は number ではありません
}いつものように、アノテーションによってランタイムの挙動が追加されることはありません。テーブルは通常のLuaテーブルのままです。インラインシェイプは、再利用する予定のない単発の構造に最適です。次のレッスンでは、シェイプに名前を付ける方法を学びます。
チャレンジ
簡単インラインの shape annotation を使用して、次のように宣言する student という名前の変数を作成します:
string型のnamenumber型のstudentIdboolean型のisEnrolled
name を "Sarah Johnson"、studentId を 12345、isEnrolled を true で初期化します。
インラインの shape annotation を使用して、次のように宣言する course という名前の2つ目の変数を作成します:
string型のtitlenumber型のcreditsstring型のinstructor
title を "Introduction to Luau"、credits を 3、instructor を "Dr. Smith" で初期化します。
それぞれ新しい行に、以下を出力(print)してください:
- student の name
- student の ID
- course の title
- credits の数
自分で試してみよう
-- ここにコードを書いてください
-- 1) インラインのシェイプアノテーションで student を宣言する
-- 2) インラインのシェイプアノテーションで course を宣言する
-- 3) 要求された4つのフィールドを出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数