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

この問題のベスト プラクティスは見つかりませんでしたが、その方法を説明できます。私にとっては、メッセージの複雑さに依存します。継承を伴う高度に分岐したメッセージがある場合、通常はそれらを「メッセージ」と呼ばれる独自のパッケージに入れます。同じパッケージ内の多くのアクターが使用するメッセージがいくつかある場合は、パッケージ オブジェクトでメッセージを定義します。ただし、単一のアクターのみが使用するメッセージがある場合 (たとえば、プライベート再帰関数をエミュレートする場合)、これらのメッセージを使用してアクターでこれらのメッセージを定義します。場合によっては、これらすべてを組み合わせることが最善の方法かもしれません。

于 2013-01-31T12:16:27.033 に答える