在一些简单的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命令的方法,以便不需要复制构造函数参数?
提前致谢?
实际警告是这样的
不允许没有参数列表的案例类; 使用带有显式"()"作为参数列表的case对象或case类.
所以给这个类一个空参数列表,正如编译器所建议的那样:
case class All() extends Requests(Posts)
Run Code Online (Sandbox Code Playgroud)