Akka 中的消息 Class:将 array/buffer 作为消息发送
Message Class in Akka: Sending an array/buffer as a message
我最近开始使用 Scala 学习 Akka 框架。我知道如果我们想将变量作为消息的一部分发送,我们可以使用消息 class,如下所示:
case class Work(start: Int, nrOfElements: Int) extends PiMessage
如何将数组作为此类消息的一部分发送?例如。下面的行不起作用。
case class WorkSend(buff: Array[Int],Dim : Int)
编辑:
我收到以下代码的越界异常:
case class WorkSend(buff: Array[Int], Dim : Int)
硕士:
val buff = Array[Int](10)
for (i <- 0 to Dim - 1) //Dim is 10
buff(i) = matrixA(0)(i)
worker ! WorkSend(buff)
在工人:
def receive = {
case WorkSend(buff) =>
for (i <- 0 to 9)
println("Item received: " + buff(i))
println("Work Done")
sender ! WorkDone
}
为什么不呢?
import akka.actor._
case class Start(buf: Array[String]) {
override def toString = buf.mkString("->")
}
object Local extends App {
implicit val system = ActorSystem("LocalSystem")
val localActor = system.actorOf(Props[LocalActor], name = "LocalActor")
localActor ! Start(Array("A", "B", "C"))
}
class LocalActor extends Actor {
def receive = {
case s: Start =>
println("LocalActor got: " + s)
}
}
LocalActor got: A->B->C
--
问题有点不同。
如何从矩阵复制(数组数组到数组)
答:您不需要创建任何中间缓冲区。只需将矩阵用作向量并将其传递给演员即可。
scala> val m = Array(Array(1,2), Array(3,4))
m: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))
scala> m(1)
res38: Array[Int] = Array(3, 4)
WorkSend(m(1))
我最近开始使用 Scala 学习 Akka 框架。我知道如果我们想将变量作为消息的一部分发送,我们可以使用消息 class,如下所示:
case class Work(start: Int, nrOfElements: Int) extends PiMessage
如何将数组作为此类消息的一部分发送?例如。下面的行不起作用。
case class WorkSend(buff: Array[Int],Dim : Int)
编辑:
我收到以下代码的越界异常:
case class WorkSend(buff: Array[Int], Dim : Int)
硕士:
val buff = Array[Int](10)
for (i <- 0 to Dim - 1) //Dim is 10
buff(i) = matrixA(0)(i)
worker ! WorkSend(buff)
在工人:
def receive = {
case WorkSend(buff) =>
for (i <- 0 to 9)
println("Item received: " + buff(i))
println("Work Done")
sender ! WorkDone
}
为什么不呢?
import akka.actor._
case class Start(buf: Array[String]) {
override def toString = buf.mkString("->")
}
object Local extends App {
implicit val system = ActorSystem("LocalSystem")
val localActor = system.actorOf(Props[LocalActor], name = "LocalActor")
localActor ! Start(Array("A", "B", "C"))
}
class LocalActor extends Actor {
def receive = {
case s: Start =>
println("LocalActor got: " + s)
}
}
LocalActor got: A->B->C
--
问题有点不同。 如何从矩阵复制(数组数组到数组) 答:您不需要创建任何中间缓冲区。只需将矩阵用作向量并将其传递给演员即可。
scala> val m = Array(Array(1,2), Array(3,4))
m: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))
scala> m(1)
res38: Array[Int] = Array(3, 4)
WorkSend(m(1))