它是什么样的实现?

What kind the implementation it is?

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网站上的例子有错吗?

如果您的消息没有字段,您可以使用不带参数的case class

case class Channel()(override val replyTo: ActorRef[SendMessage])
  extends ExpectingReply[SendMessage]

如果您询问如何创建此类 class 的实例,那么您应该使用标准的多参数函数调用语法:

val msg = Channel()(sendMessageActorRef)

也就是说,在我看来,特别是在您链接到的那部分 Akka API 中,您不必明确提供任何 ActorRefEffects 似乎是自动完成的。