何も返さない関数
CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 24/73。
値の計算を行わない関数は数多く存在します。メッセージの印刷、テーブルの更新、状態の保存など、何かを実行する関数です。Luauでは、空の返り値の型である () を使用して、関数が nothing を返すことを注釈できます:
function logMessage(message: string): ()
print(message)
end
local counter = 0
function incrementCounter(): ()
counter += 1
endTypeScriptを見たことがあるなら、() は void の役割を果たします。ただしLuauでの表記は、文字通り「0個の返り値」を意味する空の括弧のペアになります。
この型注釈は省略可能です。省略した場合、Luauはその関数が何も返さないと推論します。明示的に : () と記述することで意図が明確にドキュメント化され、シグネチャを読む人は誰でも、この関数が結果のためではなく副作用(side effects)のために呼び出されることを理解できます。
(いつものように)実行時の動作は何も変わりません。return 値のない関数の結果を取得しようとすると、通常のLuaと同様に単に nil が生成されます。
チャレンジ
簡単userName: string を受け取り、明示的な戻り値の型として () を持つ displayWelcome という名前の関数を作成してください。この関数は "Welcome to our application, [userName]!" と出力する必要があります。
errorMessage: string を受け取り、戻り値の型が () である logError という名前の関数を作成してください。この関数は "ERROR: [errorMessage]" と出力する必要があります。
パラメータを受け取らず、戻り値の型が () である processData という名前の関数を作成してください。この関数は "Processing data..." を出力し、次の行に "Data processing complete." と出力する必要があります。
以下の順序でこれらを呼び出してください:
displayWelcome("Alice")processData()logError("Invalid input detected")displayWelcome("Bob")
自分で試してみよう
-- ここにコードを書いてください
-- displayWelcome(userName: string): ()
-- logError(errorMessage: string): ()
-- processData(): ()
-- 次に呼び出します: displayWelcome("Alice"), processData(),
-- logError("Invalid input detected"), displayWelcome("Bob")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Luau入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数