Menu
Coddy logo textTech

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

CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 37/73。

Luaでは、長い間recordsとしてtableを使ってきました:local user = {name = "Ana", age = 20}。フィールド名を間違えて入力したり、フィールドを1つ忘れたり、numberが入るべき場所にstringを格納したりするのを防ぐものは何もありません。コードが実行されて初めて気づきます。

Luauでは、波括弧の間に各フィールドとその型を列挙して、宣言の中でそのようなtableshapeを直接記述できます:

local user: {name: string, age: number} = {
    name = "Ana",
    age = 20,
}

これを、すでに知っているtable型と比較してみましょう:{number}は配列を表し、{[string]: number}は任意のstringキーを持つマップを表します。shapeはより正確です。各フィールドを個別に名前で指定し、それぞれのフィールドに独自の型を与えます。

shapeを宣言すると、編集している間に型チェッカーがtableをそれに照らして検証します。フィールドが欠けていたり、値の型が間違っていたりすると、コードが実行される前に警告されます:

local user: {name: string, age: number} = {
    name = "Ana",
    age = "twenty", -- ✗ 型エラー: string は number ではありません
}

いつもどおり、annotationによって実行時の動作が追加されることはありません:このtableは通常のLuaのtableです。inlineのshapeは、再利用する予定のない一度限りの構造に最適です。次のレッスンでは、shapeに名前を付けます。

challenge icon

チャレンジ

簡単

インライン shape アノテーションを使用して、次を宣言する変数 student を作成します。

  • 型が stringname
  • 型が numberstudentId
  • 型が booleanisEnrolled

名前を "Sarah Johnson"、studentId を 12345、isEnrolled を true として初期化します。

インライン shape アノテーションを使用して、次を宣言する 2 番目の変数 course を作成します。

  • 型が stringtitle
  • 型が numbercredits
  • 型が stringinstructor

タイトルを "Introduction to Luau"、credits を 3、instructor を "Dr. Smith" として初期化します。

次の内容を、それぞれ独立した行に出力します。

  1. 学生の名前
  2. 学生の ID
  3. コースのタイトル
  4. credits の数

自分で試してみよう

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

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

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

自分で練習してみよう: Luaオンラインコンパイラ