定义案例类的好地方?

时间:2013-01-31 12:03:09

标签: scala

是否有建议的最佳做法,在Scala中定义案例类的位置? 例如,假设您有几个演员彼此发送消息,应该在哪里定义案例类?

在共享包中?其中一个演员 - 如果是哪一个?

或者在包对象中,例如:

package object mypackage {
  case object Ping
  case object Pong
  case object Stop
}

如果演员在同一个包裹中?

试着在这里找出最佳实践。

2 个答案:

答案 0 :(得分:2)

我通常把消息案例类放在演员自己的位置,缺点是你不能以这种方式在演员之间分享消息类,但实际上这对我来说从来都不是问题而且它有点冗长当他们打电话给他们时:

MyActor ! MyActor.MyMessage

答案 1 :(得分:2)

我没有找到这个问题的最佳做法,但我可以告诉你我是怎么做的。对我来说,这取决于消息的复杂性。如果我有高度分支的继承消息,我通常将它们放入一个名为“message”的自己的包中。如果我在同一个包中只有许多Actors使用的消息,我在包对象中定义消息。但是如果存在仅由单个actor使用的消息(例如,如果我想模拟私有递归函数),我使用它们在Actor中定义这些消息。有时混合所有这些可能是最好的方法。