【问题标题】:What kind the implementation it is?它是什么样的实现?
【发布时间】:2019-08-23 19:50:51
【问题描述】:

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

【问题讨论】:

    标签: scala akka akka-typed


    【解决方案1】:

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

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

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

    val msg = Channel()(sendMessageActorRef)
    

    话虽如此,在我看来,特别是在您链接到的 Akka API 的那部分中,您不必显式提供任何 ActorRefs,Effects 似乎是自动执行的.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2012-10-31
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多