当我试图引用代码时出现一些格式问题,所以这是图片:(
import akka.actor.{Actor, ActorSystem, Props}
case class Number(n: Int)
case class String(s: String)
class DoublingActor extends Actor {
def receive: Receive = {
case Number(n) => println(s"Result of doubling $n: ${n*2}")
case String(s) => println(s"Result of doubling $s: ${s}${s}")
}
}
object Double extends App {
val system = ActorSystem("DoublerSystme")
val doubler = system.actorOf(Props[DoublingActor], "doubler")
doubler ! Number(5)
doubler ! String("test")
}
问题是,演员可以正常使用数字,但是如何添加两次返回字符串的匹配函数?
答案 0 :(得分:1)
你看到了什么行为?由于您的问题被包装在图像中,我无法测试,但我希望您使用描述性消息object String is not a case class, nor does it have an unapply/unapplySeq member
收到编译错误。
因为它没有unapply
成员,所以您需要将语句修改为
case s: String => println(s"Result of doubling $s: ${s}:${s}")
答案 1 :(得分:1)
您应避免将案例类命名为String
,尤其是在您的情况下,使用String
参数类型:
case class String(s: String)
编译器会混淆期望参数类型与您想要的实际String
类型不同。如果您明确指定java.lang.String
作为参数类型,则您的应用程序将起作用:
case class String(s: java.lang.String)
在任何情况下,我都不建议将案例类命名为String
。