私はいくつかの単純なスカラーコーディングの練習中に、とコンストラクタパラメータの重複を使わずに、ケースクラスのイデオロギー問題にぶつかった。パラメータなしのケースクラス
それはすべてが、次の2非常に簡単なクラスで開始:それでは、私は実体Post
を持っていると私はタイプのすべてのレコードを照会するコマンドとしてAll
クラスを追加したいとしましょう
trait Namespace
case class Reply[T](namespace: Namespace, correlation: String, data: Try[T])
abstract class Request(val namespace: Namespace, val id: String = UUID.randomUUID().toString) {
def success[T](data: T) = Reply(namespace, id, Try(data))
def failure(msg: String) = Reply(namespace, id, Failure(new RuntimeException(msg)))
}
Post
。アップ私の現在のセットでは、実際には次のように書くことが容易になるだろう:
case class All extends Request(Posts)
しかし、この場合、私はパラメータなしケースクラスがに廃止されていること、コンパイラの警告が表示されます。だから、1は次のようにそれを書き換えることをお勧めかもしれません。この場合、オブジェクト内しかし
case object All extends Request(Posts)
すべてがが各要求の一意のIDを持つ避けたいそのid
フィールドと一緒に、一度だけインスタンス化されます。
All
コマンドを表現するより良い方法を提案してください。は、コンストラクタ引数を複製する必要はありませんか?
ありがとうございます。
お返事ありがとう – tkachuko