【发布时间】:2012-09-02 21:36:52
【问题描述】:
我正在使用 scala 中的 Actor 编写一个程序,其中一个 Actor (Actor1) 接受两个数字作为命令行参数,并向另一个 Actor Actor2 发送一条消息(计算它们的总和)。 Actor2 将结果发送给 Actor1,Actor1 将其打印在屏幕上。
class Actor1 extends Actor {
def main(args: Array[String]) {
val n= Integer.parseInt(args(0))
val k= Integer.parseInt(args(1))
val actor2 = new Actor2
actor2 ! (n, k)
}
def act()
{
react{
case num: Integer =>
println(num)
case _=>
println("Sum not received")
exit
}
}
}
class Actor2 extends Actor {
def act(){
loop
{
react
{
case(n:Int, k:Int) =>
val i = n + k
val actor1 = new Actor1
actor1 ! i}
}
}
}
是否可以在扩展 Actor 的类中定义 main(),还有其他方法可以接受 Actor 的命令行参数吗? 它显示了错误:类 Actor1 需要是抽象的,因为未定义 ()Unit 类型的 trait Reactor 中的方法行为。
【问题讨论】:
-
Main 需要在一个对象中,而不是在一个类中。
-
@TonyK.I 尝试用对象代替 Actor1 的类,但它给出了类似的错误:无法创建对象,因为未定义 ()Unit 类型的 trait Reactor 中的方法行为
标签: scala