私は scala が初めてで、複数 (たとえば 30 個) のアクターを作成し、それらの間でメッセージを渡すプログラムを scala で作成しようとしています。
以下は私が今まで管理してきたものです:
import scala.actors.Actor
import scala.util.Random
class MyActor(val id:Int, val N:Int) extends Actor {
def act() {
println ("Starting actor: " + id)
/**
react{
case str : String =>
println("Received Msg: " + str)
val randNo : Int = Random.nextInt(N)
println("Actor " + id + " Picking a random actor: " + randNo)
// Here, I should forward the message received to the ALREADY created and started actors
// val objActor = new MyActor(randNo : Int, N : Int)
// objActor.start
// objActor ! str
}
*/
}
}
object Main {
def main(args:Array[String]) {
if(args.length == 0)
{
println("Usage scala Main <numNodes>")
sys.exit()
}
val N : Int = (args(0)).toInt
// Starting all actors
for (i: Int <- 0 to N-1) {
val a = new MyActor(i : Int, N : Int)
println ("About to start actor " + a.id)
a.start
// a!"Broadcast this msg to all actors"
}
}
}
このプログラムの目的は、複数のアクターを作成し、あるアクターから別のアクターに文字列を転送することです。
上記のコードは、コマンド ライン引数として指定された「N」個のアクターを作成します。これらのアクターは、オブジェクト Main によって作成および開始されます。メインは、上記で作成されたアクターの 1 つだけにメッセージを送信する必要があります。メインからメッセージを受信したアクターは、同じメッセージを別の作成済み/開始済みのアクターに転送する必要があります。
これは可能ですか?もしそうなら、正しい方向に私を導くことができますか?
よろしくお願いします、MS