継続を使えばこの前作った Generator のような何かを概念通りに書けそうだったので書いてみた。 ソース ソースは gist 概要は大体前回の Actor を使った版と同じ。 使い方 import scala.util.continuations.{cpsParam} import net.shomah4a.utils.generator.continuation.Generator.{gen, yld, GenParam} def main() { for (v <- gen[Int] { yld(1) yld(1) yld(2) yld(3) }) { println(v) } } main() gen 関数に引数なしの関数を渡し、その中で yld(x) した値を順にイテレートする。 この場合の結果は 1 1 2 3となる。 処理の順番は yld(1) -> println(v)