Menu
Coddy logo textTech

coroutine.create と resume

CoddyのLuaジャーニー「ロジックと制御フロー」セクションの一部。レッスン 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)  -- 両方のメッセージを出力します

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

challenge icon

チャレンジ

簡単

runSimpleCoroutineというfunctionを記述します。このfunctionはmessageを受け取り、そのmessageを出力するcoroutineからの出力を返します。

coroutine.create()を使用して、指定されたmessageを出力するfunctionをラップしたcoroutineを作成します。次に、coroutine.resume()を使用してcoroutineを実行します。functionは出力されたmessageを返す必要があります。

ロジック:

  • messageパラメーターを出力するfunctionを定義する
  • coroutine.create()を使用して、そのfunctionからcoroutineを作成する
  • coroutine.resume()を使用してcoroutineを再開する
  • 出力されたmessageを返す

パラメーター:

  • message(文字列):coroutineによって出力されるmessage

戻り値:coroutineによって出力されたmessage(文字列)

自分で試してみよう

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

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

ロジックと制御フローのすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ