我正在学习 Scala 和 Akka,并且在最近的查找中solution https://stackoverflow.com/questions/22770927/waiting-for-multiple-results-in-akka,我发现了类似的东西
case class TotalTaxResult(taxAmount:Double)
case object TaxCalculationTimeout
两者有什么区别?
我什么时候应该使用其中一种而不是另一种?
案例类可以接受参数,因此该案例类的每个实例都可以根据其参数的值而有所不同。另一方面,case 对象在构造函数中不接受参数,因此只能有一个它的实例(一个单例,就像常规的 scalaobject
is).
如果您向演员传达的消息不需要任何价值区分,请使用案例对象。例如,如果你有一个演员做了一些工作,而你从外部想要告诉它去做工作,那么也许你会这样做:
case object DoWork
...
def receive = {
case DoWork =>
//do some work here
}
但是,如果您希望工作的完成方式有所不同,您可能需要重新定义您的消息,如下所示:
case class DoWorkAfter(waitTime:Long)
...
def receive = {
case class DoWorkAfter(time) =>
context.system.scheduler.scheduleOnce(time.milliseconds, self, DoWork)
case DoWork =>
//do some work here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)