Actor 版 Generator 修正版
Actor 版 Generator を修正したので gist に上げた
変更点は
- hasNext を呼びまくってもいい
- Generator.gen を使えば継続版と同じ感じで書ける
- Generator 用メッセージを識別してみた
といったところ。
でも使用はオススメしない
2010/01/21 修正
- [twitter:@cooldaemon] さんに Actor のメッセージが選択受信できることを教えていただいたので選択受信するように
フィボナッチ
比較用にフィボナッチ数を計算するサンプルも書いてはみたものの、 sleep が入っているので actor で動かしている方のスレッドからメッセージが送られまくって色々大変なことになるのではないか…。
無限長の generator を作るときは使わない方がいいかも。
import net.shomah4a.utils.generator.actor import net.shomah4a.utils.generator.actor.Generator.{gen} def main() { for (v <- gen[Int] {(x) => { x ! 1 x ! 1 def fib(n: Int, m: Int): Unit = { x ! (n + m) fib(m, n+m) } fib(1, 1) }}) { println(v) Thread.sleep(100) } } main()