我对这种叫做 Scala 的花哨语言很陌生。
我有足够的(我猜)C++ 编程经验。作为一个编程练习,我尝试使用 Scala 的 Actor 模型来添加数组的元素。我创建了一个名为 workerActor 的类。在我的主要方法中,我创建了这个类的一个对象,然后尝试向这个对象发送消息(这是一个演员,因为我从 Scala 中的 Actor 类扩展了我的类)。当我将字符串传递给演员时,act 方法中的代码会被执行,并且逻辑会转到正确的情况下,每个人都很高兴。但是,当我尝试将元组传递给 sample 之类的对象时!(2,4,arr)
2 和 4 是我希望我的演员进行计算的数组中的索引,而 arr 是我要传递的数组,它显示错误。如何将数组和索引传递给我的数组给 Actor。Scala 是否允许将元组传递给演员?
作为一个有趣的观察,我意识到如果我的 act() 方法中有第二种情况,我会得到一个编译错误。Eclipse 向我显示了无法访问的代码。知道为什么我不能在接收方法中使用第二种情况可能是什么问题。
case object add
case object trial
import scala.actors._
import Actor._
class workerActor(arr: Array[Int]) extends Actor{
def addarr(a: Int, b: Int): Int = {
var sum = 0
for (i <- a to b)
sum += arr(i)
println("Sum :",a,b,sum)
sum
}
def act(){
receive {
case trial => println("Received trial")
//case trial => println("Received add") //uncommenting this line does not compile the program
}
}
}
object hello {
def main(args: Array[String]): Unit = {
println("Hello World")
val arr = Array(1,2,3,4,5,7,13,4,6,6,23);
val sample = new workerActor(arr)
val s = sample.addarr(2, 4,arr)
sample ! (2,4)
sample ! "try"
sample ! add
sample.start
sample ! trial
}
}
而不是传递元组的问题,这看起来是接收多个案例的奇怪问题(可能是语法)。