我是 scala 的新手,我正在尝试在 scala 中编写一个程序,该程序创建多个(例如 30 个)actor 并在它们之间传递消息。
以下是我到目前为止所管理的:
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”个作为命令行参数给出的演员。这些actors由对象Main创建和启动。Main 应仅向上述创建的参与者之一发送消息。从 Main 接收消息的 Actor 应该将相同的消息转发给另一个已经创建/启动的 Actor。
这可能吗?如果是这样,你能指导我正确的方向吗?
提前致谢,女士