3

是否有建议的最佳实践来在 Scala 中定义案例类的位置?例如,假设您有几个参与者相互发送消息,应该在哪里定义案例类?

在共享包中?在其中一位演员中-如果是的话,是哪一位?

或者在一个包对象中,例如:

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

如果演员在同一个包里?

只是想在这里找出最佳实践。

4

2 回答 2

2

我通常将消息案例类与参与者本身放在一起,缺点是您不能以这种方式在参与者之间共享消息类,但实际上这对我来说从来都不是问题,而且在调用它们时有点冗长情商:

MyActor ! MyActor.MyMessage
于 2013-01-31T12:15:44.507 回答
2

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

于 2013-01-31T12:16:27.033 回答