gpt4 book ai didi

scala - 如何在 Akka 中向数组中的每个 Actor(或 ActorRef)发送消息?

转载 作者:行者123 更新时间:2023-12-03 06:52:00 26 4
gpt4 key购买 nike

我正在 ubuntu 12.04 下使用 scala 2.10 和 Akka 2.2.1 开发 eclipse。

        // A and B are derived from Node
val algorithm = if(args(0) > 1)()=> new A else ()=> new B

/* alternative:
val algorithm = if(args(0) > 1) (()=> system.actorOf(Props(new A), name ="A") )
else (()=> system.actorOf(Props(new B),name="B"))
*/
// alternative : class work(algorithm: ()=>ActorRef, num:Int) {
class work(algorithm: ()=> Node, num: Int){

val a = Array.fill(num)(algorithm) // here I wanna create an array with num slots
// and objects of A or B in it
val rand = new Random(System.currentTimeMillis())
val randomNode = a(rand.nextInt(5))
def find (x:Int): Array[ActorRef]{....}
def receive = {
case Rumor =>
a.foreach(ref=> ref !Init(index, find(x), self))
randomNode ! Rumor
case _ => println(...)
}
}

更新:

我创建了一个包含 Actor 或 ActorRef 的数组(我不确定我可以在 Akka 中使用哪一个)。但 eclipse 报告

case Rumor => 
a.foreach(ref=> ref !Init(index, find(x), self))
randomNode ! Rumor

尝试了好几次,还是不行。

最佳答案

Array 构造函数仅接受长度值,而不接受默认值函数。您引用的帖子解释了如何构建接受默认值生成器的自定义数据结构。

你所做的相当于

val arr = new Array[Node](num)
val a = arr(algorithm)

所以 scala 需要一个整数索引。它提示找不到将 ()=>Node 转换为整数以访问数组中的索引的方法。

要使用默认值填充数组,您可以使用 Array.fill像这样:

val a = Array.fill(num)(algorithm)

关于scala - 如何在 Akka 中向数组中的每个 Actor(或 ActorRef)发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com