コルーチンとは?
CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 48/54。
ビデオゲームをプレイしているところを想像してみてください。いつでも好きな時に一時停止して、別のことをしてから戻り、中断したところから正確に再開することができます。Luaのコルーチンもこれと同じように機能します。
コルーチンは、実行の途中で自身を一時停止し、後でその正確な地点から再開できる特殊な関数のようなものです。中断することなく最初から最後まで実行される通常の関数とは異なり、コルーチンでは、いつ一時停止し、いつ再開するかを制御できます。
この能力により、協調的マルチタスクと呼ばれるものが可能になります。複数のタスクを全く同時に実行するのではなく、コルーチンを使用することで、自発的に異なるタスク間を切り替えることができます。
1つのコルーチンがしばらく実行され、自身を一時停止し、別のコルーチンが引き継ぐ、といった具合です。各コルーチンは、いつ制御を戻すかを決定することで協力し合います。
コルーチンは、長時間実行される操作を分割したり、ターン制のシステムを管理したり、呼び出し間で状態を保持する必要があるシーケンスを作成したりする場合に便利です。今後のレッスンでは、Luaでコルーチンを作成、一時停止、および再開する方法を学びます。
チートシート
コルーチンは、実行中に自身を一時停止し、後でまったく同じポイントから再開できる特別な関数です。最初から最後まで停止せずに実行される通常の関数とは異なります。
コルーチンは協調的マルチタスクを可能にします。これは、タスクが同時に実行されるのではなく、タスク間で自発的に制御を切り替える仕組みです。1つのコルーチンが実行され、自身を一時停止し、別のコルーチンが引き継ぎ、そのサイクルが繰り返されます。
コルーチンは、長時間実行される操作の分割、ターン制システムの管理、または呼び出し間で状態を保持する必要があるシーケンスの作成に役立ちます。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。