====== Fiber ====== ファイバーです。他の言語ではコルーチンやマイクロスレッドと言われたりしています。 fiber(){}式によって生成されます。 処理の途中で中断し、再開することのできる関数として用いることができます。 returnするとそのファイバーは「終了」という扱いを受けてis_aliveがtrueを返すようになり、また、resetするまでは呼び出そうとしてもundefinedを返すだけとなります。 ===== Example ===== // 基本的な使い方 { fib : fiber(){ i : 0; while (true){ ++i; yield i; } } 10.times{ fib().p; } } // fiberから呼び出した関数でもyieldできる { f : fun(){ yield "in fun f"; } fib : fiber(){ yield "fiber begin"; f(); yield "fiber end"; // returnの値は無視される return "fiber finish"; } i : 0; while (fib.is_alive){ ret : fib(); ret.p; if (fib.is_alive){ ("loop "~i.to_s~" : "~ret).p; ++i; } } } ===== Methods ===== |(constructor)| インスタンス生成| |reset| 初期状態に戻す| |halt| 強制終了させる| |is_alive| まだ終了していないかどうか|