案例类没有参数替代

tka*_*uko 0 scala case-class

在一些简单的scala编码练习中,我遇到了没有参数构造函数参数重复case类的意识形态问题.

这一切都始于以下两个非常简单的类:

  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)))
  }
Run Code Online (Sandbox Code Playgroud)

现在让我们假设我有一个实体Post,我想添加All类作为查询所有类型记录命令Post.在我目前的设置中,实际编写以下内容会更容易:

case class All extends Request(Posts)
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,我得到编译器警告,不推荐使用不带参数的case类.所以有人可能建议将其重写为以下内容:

case object All extends Request(Posts)
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,对象All将仅与其id字段一起实例化一次,以避免每个请求具有唯一ID.

能否请您建议一种更好的表示All命令的方法,以便不需要复制构造函数参数

提前致谢?

Kol*_*mar 5

实际警告是这样的

不允许没有参数列表的案例类; 使用带有显式"()"作为参数列表的case对象或case类.

所以给这个类一个空参数列表,正如编译器所建议的那样:

case class All() extends Requests(Posts)
Run Code Online (Sandbox Code Playgroud)