インラインでの形状のアノテーション
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 37/73。
Luaでは、長い間recordsとしてtableを使ってきました:local user = {name = "Ana", age = 20}。フィールド名を間違えて入力したり、フィールドを1つ忘れたり、numberが入るべき場所にstringを格納したりするのを防ぐものは何もありません。コードが実行されて初めて気づきます。
Luauでは、波括弧の間に各フィールドとその型を列挙して、宣言の中でそのようなtableのshapeを直接記述できます:
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に名前を付けます。
チャレンジ
簡単インライン shape アノテーションを使用して、次を宣言する変数 student を作成します。
- 型が
stringのname - 型が
numberのstudentId - 型が
booleanのisEnrolled
名前を "Sarah Johnson"、studentId を 12345、isEnrolled を true として初期化します。
インライン shape アノテーションを使用して、次を宣言する 2 番目の変数 course を作成します。
- 型が
stringのtitle - 型が
numberのcredits - 型が
stringのinstructor
タイトルを "Introduction to Luau"、credits を 3、instructor を "Dr. Smith" として初期化します。
次の内容を、それぞれ独立した行に出力します。
- 学生の名前
- 学生の ID
- コースのタイトル
- credits の数
自分で試してみよう
-- ここにコードを書いてください
-- 1) インラインの shape アノテーションで student を宣言する
-- 2) インラインの shape アノテーションで course を宣言する
-- 3) 要求された4つのフィールドを出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ