インラインでの形状のアノテーション
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 39/80。
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テーブルです。インラインの形状は、再利用する予定のない一度限りの構造に最適です。次のレッスンでは、形状に名前を付けます。
チャレンジ
簡単宣言の中で学生のレコードを記述します。
local student: {name: string, studentId: number} = {name = "Sarah Johnson", studentId = 12345}を宣言します。student.nameを出力し、次にstudent.studentIdを出力します。
コードを実行を押します。出力にはSarah Johnsonと12345が表示されます。
自分で試してみよう
-- 1) インラインのシェイプ注釈を付けてstudentを宣言する
-- 2) studentのnameを出力し、次にstudentIdを出力する
Luau入門のすべてのレッスン
自分で練習してみよう: Luauオンラインコンパイラ