文書の出典
- 出典
- Lua 5.5.1 Documentation
- 上流バージョン
- Lua 5.5.1
- 文書状態
- 翻訳
6.3 – コルーチン操作
このライブラリは、テーブルcoroutineに収められたコルーチン操作を構成します。コルーチンの一般的な説明については§2.6を参照してください。
coroutine.close ([co])
コルーチンcoを閉じます。つまり、保留中のすべてのクローズ対象変数を閉じ、コルーチンをdead状態にします。coのデフォルトは実行中のコルーチンです。
指定するコルーチンは、dead、suspended、または実行中のコルーチンでなければなりません。実行中のコルーチンに対しては、この関数は返りません。代わりに、そのコルーチンを(再)開始したresumeが返ります。
ほかのコルーチンでは、エラー(コルーチンを停止させた元のエラー、またはクローズメソッド内のエラー)がある場合、この関数はfalseとエラーオブジェクトを返します。それ以外の場合はtrueを返します。
coroutine.create (f)
本体をfとする新しいコルーチンを作成します。fは関数でなければなりません。型が"thread"であるオブジェクトとして、この新しいコルーチンを返します。
coroutine.isyieldable ([co])
コルーチンcoがyieldできる場合にtrueを返します。coのデフォルトは実行中のコルーチンです。
コルーチンがyield可能なのは、それがメインスレッドではなく、yield不可能なC関数の内部にもいない場合です。
coroutine.resume (co [, val1, ···])
コルーチンcoの実行を開始または継続します。コルーチンを最初にresumeすると、本体の実行が始まります。値val1,…は、本体関数への引数として渡されます。コルーチンがyieldしていた場合、resumeはその実行を再開します。値val1,…はyieldの結果として渡されます。
コルーチンがエラーなく実行された場合、resumeはtrueに加えて、yieldへ渡された値(コルーチンがyieldした場合)、または本体関数が返した値(コルーチンが終了した場合)を返します。エラーが発生した場合、resumeはfalseとエラーメッセージを返します。
coroutine.running ()
実行中のコルーチンとブール値を返します。実行中のコルーチンがメインコルーチンの場合、そのブール値はtrueです。
coroutine.status (co)
コルーチンcoの状態を文字列で返します。コルーチンが実行中(つまり、statusを呼び出したコルーチン自体)なら"running"、コルーチンがyieldの呼び出しで中断しているか、まだ実行を開始していなければ"suspended"、コルーチンがアクティブだが実行中ではない(つまり、別のコルーチンをresumeしている)なら"normal"、コルーチンが本体関数を完了したか、エラーで停止したなら"dead"です。
coroutine.wrap (f)
本体をfとする新しいコルーチンを作成します。fは関数でなければなりません。呼び出されるたびにコルーチンをresumeする関数を返します。この関数に渡された引数は、resumeへの追加引数と同様に動作します。この関数は、先頭のブール値を除き、resumeが返す値と同じ値を返します。エラーの場合、この関数はコルーチンを閉じ、エラーを伝播します。
coroutine.yield (···)
呼び出したコルーチンの実行を中断します。yieldへのすべての引数は、resumeへの追加の結果として渡されます。