簡體   English   中英

Akka中的消息類:將數組/緩沖區作為消息發送

[英]Message Class in Akka: Sending an array/buffer as a message

我最近開始使用Scala學習Akka框架。 我知道如果要將變量作為消息的一部分發送,可以使用如下所示的消息類:

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得到:A-> B-> C

-

問題有點不同。 如何從矩陣復制(從數組到數組)答案:您不需要創建任何中間緩沖區。 只需將矩陣用作向量並將其傳遞給actor。

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM