何も返さない関数
CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 24/73。
多くのfunctionは値を計算しません。functionは何かをします。メッセージを表示したり、テーブルを更新したり、状態を保存したりします。Luauでは、空の戻り値型()を使って、functionがnothingを返すことを注釈できます。
function logMessage(message: string): ()
print(message)
end
local counter = 0
function incrementCounter(): ()
counter += 1
endTypeScriptを見たことがあるなら、()はvoidの役割を果たしますが、Luauでの表記は空の丸括弧のペアで、文字どおり「戻り値ゼロ」を意味します。
注釈は省略可能です。省略すると、Luauはfunctionが何も返さないと推論します。: ()と明示的に書くことで意図を文書化できます。シグネチャを読む人は誰でも、このfunctionが結果ではなく副作用のために呼び出されることを理解できます。
実行時には何も変わりません(いつもどおりです)。return値のないfunctionの結果を取得しようとすると、単にnilが生成されます。これは通常のLuaと同じです。
チャレンジ
簡単displayWelcomeという名前のfunctionを作成します。このfunctionはuserName: stringを受け取り、明示的な戻り値の型として()を持ちます。次の内容を出力します:"Welcome to our application, [userName]!"
logErrorという名前のfunctionを作成します。このfunctionは戻り値の型が()で、errorMessage: stringを受け取ります。次の内容を出力します:"ERROR: [errorMessage]"
パラメーターを受け取らず、戻り値の型が()であるprocessDataという名前のfunctionを作成します。"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
プロジェクト:タスクの型定義タスクを追加する関数自分で練習してみよう: Luaオンラインコンパイラ