它是什么样的实现?
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 中,您不必明确提供任何 ActorRef
,Effect
s 似乎是自动完成的。
在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 中,您不必明确提供任何 ActorRef
,Effect
s 似乎是自动完成的。