在akka website上,您可以定义以下内容:
sealed trait AccountCommand[Reply] extends ExpectingReply[Reply]
final case class Withdraw(amount: BigDecimal)(override val replyTo: ActorRef[OperationResult])
extends AccountCommand[OperationResult]
如何将ActorRef
分配给replyTo
?
我以代码为例,尝试实现自己的类型:
case object Channel (override val replyTo: ActorRef[SendMessage])
extends ExpectingReply[SendMessage]
,编译器抱怨。
这样,编译器不会抱怨:
case object Channel extends ExpectingReply[SendMessage] {
override def replyTo: ActorRef[SendMessage] = ???
}
akka网站上的示例是否错误?
答案 0 :(得分:2)
如果您的消息没有字段,则可以使用不带参数的case class
:
case class Channel()(override val replyTo: ActorRef[SendMessage])
extends ExpectingReply[SendMessage]
如果您询问如何创建此类的实例,则应使用标准的多参数函数调用语法:
val msg = Channel()(sendMessageActorRef)
话虽如此,在我看来,特别是在链接到的Akka API的那一部分中,您不必显式提供任何ActorRef
,Effect
似乎确实可以有点自动。