Menu
Coddy logo textTech

coroutine.create と resume

CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 49/54。

コルーチンが何であるかを理解したところで、実際に Lua でそれらを作成し、実行する方法を学びましょう。

コルーチンを作成するには、coroutine.create() 関数を使用します。この関数は、通常の関数を引数として受け取り、それをコルーチンオブジェクトにラップします。基本的な構文は次のとおりです:

function myTask()
    print("Hello from coroutine!")
end

local co = coroutine.create(myTask)

この時点で、コルーチンは存在していますが、まだ実行は開始されていません。関数 myTask はまだ呼び出されていません。コルーチンの実行を実際に開始または継続するには、coroutine.resume() を使用します:

coroutine.resume(co)

コルーチンで初めて resume() を呼び出すと、その関数の最初から実行が開始されます。コルーチンが一時停止することなく最後まで実行されると、完了し、再度再開することはできません。

完全な例を次に示します:

function greet()
    print("Starting...")
    print("Finishing!")
end

local co = coroutine.create(greet)
coroutine.resume(co)  -- 両方のメッセージを出力します

このコルーチンは、最初から最後まで一気に実行されます。次のレッスンでは、実行の途中でコルーチンを一時停止させる方法を学びます。

challenge icon

チャレンジ

簡単

message を受け取り、そのメッセージを表示するコルーチンからの出力を返す関数 runSimpleCoroutine を作成してください。

coroutine.create() を使用して、提供されたメッセージを表示する関数をラップするコルーチンを作成します。次に、coroutine.resume() を使用してコルーチンを実行します。この関数は、表示されたメッセージを返す必要があります。

ロジック:

  • message パラメータを表示する関数を定義します
  • coroutine.create() を使用して、その関数からコルーチンを作成します
  • coroutine.resume() を使用してコルーチンを再開します
  • 表示されたメッセージを返します

パラメータ:

  • message (string): コルーチンによって表示されるメッセージ

戻り値: コルーチンによって表示されたメッセージ (string)

チートシート

コルーチンを作成するには、関数を引数として coroutine.create() を使用します:

function myTask()
    print("Hello from coroutine!")
end

local co = coroutine.create(myTask)

コルーチンの実行を開始または継続するには、coroutine.resume() を使用します:

coroutine.resume(co)

完全な例:

function greet()
    print("Starting...")
    print("Finishing!")
end

local co = coroutine.create(greet)
coroutine.resume(co)  -- 両方のメッセージを出力します

resume() が初めて呼び出されると、コルーチンは最初から実行を開始します。一時停止せずに完了まで実行された場合、再度再開することはできません。

自分で試してみよう

function runSimpleCoroutine(message)
    -- ここにコードを記述してください
end
quiz icon腕試し

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

Logic & Flowのすべてのレッスン