Menu
Coddy logo textTech

インラインでの形状のアノテーション

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テーブルのままです。インラインシェイプは、再利用する予定のない単発の構造に最適です。次のレッスンでは、シェイプに名前を付ける方法を学びます。

challenge icon

チャレンジ

簡単

インラインの shape annotation を使用して、次のように宣言する student という名前の変数を作成します:

  • string 型の name
  • number 型の studentId
  • boolean 型の isEnrolled

name を "Sarah Johnson"、studentId を 12345、isEnrolled を true で初期化します。

インラインの shape annotation を使用して、次のように宣言する course という名前の2つ目の変数を作成します:

  • string 型の title
  • number 型の credits
  • string 型の instructor

title を "Introduction to Luau"、credits を 3、instructor を "Dr. Smith" で初期化します。

それぞれ新しい行に、以下を出力(print)してください:

  1. student の name
  2. student の ID
  3. course の title
  4. credits の数

自分で試してみよう

-- ここにコードを書いてください
-- 1) インラインのシェイプアノテーションで student を宣言する
-- 2) インラインのシェイプアノテーションで course を宣言する
-- 3) 要求された4つのフィールドを出力する
quiz icon腕試し

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

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