分散できる集中的なタスクがありますが、最終結果を蓄積して、後で別のメソッドに渡す必要があります。
具体的に言うと、大量のテキスト ファイルのコレクション内の個々のファイルの単語カウントを行っているとします。
これまでに作成したバージョンは次のようになります。
import scala.actors.Actor
import scala.actors.Actor._
import scala.collection.mutable.{ArrayBuffer => mArray}
case object Stop
class Collector(val bin: mArray[(String, Int)], tcount: Int) extends Actor {
def act() {
loop {
receive {
case (fn: String, val: Int) => {
// the following "bin" object is what I ultimately need to get back
bin.append((fn, val))
}
case Stop => {
tcount -= 1
if(tcount == 0) exit()
}}}}}
class Processor(col: Collector, flist: Seq[File]) extends Actor {
def act() {
for(fn <- flist) {
val wcount = count words in fn // just a place holder for word counting code
col ! (fn, wcount)
}
col ! (id, Stop)
}
}
メインメソッドがコレクターの終了を待ってから「ビン」オブジェクトを処理するようにするいくつかの自作メソッドを考えることができます。
しかし、上記の「ビン」を取得してメインに戻す適切なスカラの方法は何ですか?