Menu
Coddy logo textTech

何も返さない関数

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

値の計算を行わない関数は数多く存在します。メッセージの印刷、テーブルの更新、状態の保存など、何かを実行する関数です。Luauでは、空の返り値の型である () を使用して、関数が nothing を返すことを注釈できます:

function logMessage(message: string): ()
    print(message)
end

local counter = 0
function incrementCounter(): ()
    counter += 1
end

TypeScriptを見たことがあるなら、()void の役割を果たします。ただしLuauでの表記は、文字通り「0個の返り値」を意味する空の括弧のペアになります。

この型注釈は省略可能です。省略した場合、Luauはその関数が何も返さないと推論します。明示的に : () と記述することで意図が明確にドキュメント化され、シグネチャを読む人は誰でも、この関数が結果のためではなく副作用(side effects)のために呼び出されることを理解できます。

(いつものように)実行時の動作は何も変わりません。return 値のない関数の結果を取得しようとすると、通常のLuaと同様に単に nil が生成されます。

challenge icon

チャレンジ

簡単

userName: string を受け取り、明示的な戻り値の型として () を持つ displayWelcome という名前の関数を作成してください。この関数は "Welcome to our application, [userName]!" と出力する必要があります。

errorMessage: string を受け取り、戻り値の型が () である logError という名前の関数を作成してください。この関数は "ERROR: [errorMessage]" と出力する必要があります。

パラメータを受け取らず、戻り値の型が () である processData という名前の関数を作成してください。この関数は "Processing data..." を出力し、次の行に "Data processing complete." と出力する必要があります。

以下の順序でこれらを呼び出してください:

  1. displayWelcome("Alice")
  2. processData()
  3. logError("Invalid input detected")
  4. displayWelcome("Bob")

自分で試してみよう

-- ここにコードを書いてください
-- displayWelcome(userName: string): ()
-- logError(errorMessage: string): ()
-- processData(): ()
-- 次に呼び出します: displayWelcome("Alice"), processData(),
-- logError("Invalid input detected"), displayWelcome("Bob")
quiz icon腕試し

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

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