タイプ情報をscalaのどこに置くか、そしてどのように置くかを理解するのに問題があります。ここでは、sのシーケンスをいくつか作成し、Actor
それらを入力しません。たとえそうしなければならなかったとしてもmap
、適切なタイプを与えるためにどのタイプのシーケンスが生成されるのかわかりません。
その後、Any
sを合計しようとしているためにコンパイラが私に怒鳴ったとき、どこからギャップを埋め始めるのかわかりません。
これが私のコードです。必要な情報を利用できるようにしながら、コードを最小化しようとしました。
object Actors {
def main(args: Array[String]) {
val array = randomArray(5)
val master = new Master(array, 5)
master.start
}
def randomArray(length: Int): Array[Int] = {
val generator = new Random
new Array[Int](length) map((_:Int) => generator nextInt)
}
}
class Master(array: Array[Int], slavesNumber: Int) extends Actor {
def act () {
val slaves = (1 to slavesNumber).map(_ => new Slave)
slaves.foreach(s => s.start)
val futures = slaves.map(s => s !! Work(array))
val results = awaitAll(3000, futures:_*)
val res2 = results.flatMap(x => x)
println((0 /: res2)(_+_))
}
}
class Slave() extends Actor {
def act () {
Actor.loop {
receive {
case Work(slice) =>
reply((slice :\ 0)(_+_))
}
}
}
}
この問題に関する包括的なドキュメントへのいくつかの良い指針をいただければ幸いです。