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) -- 両方のメッセージを出力しますこのコルーチンは、最初から最後まで一気に実行されます。次のレッスンでは、実行の途中でコルーチンを一時停止させる方法を学びます。
チャレンジ
簡単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
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。