【发布时间】:2016-06-22 23:00:48
【问题描述】:
我发现自己编写了很多(某种)样板代码。例如说我有以下特征
trait Foo {
def x: Int
}
trait Bar {
def y: Boolean
def z: String
}
然后我想要一个不多或少实现这些的案例类。
case class MyClass(x: Int, y: Boolean, z: String) extends Foo with Bar
这似乎并不烦人,但现在想象一下,我的特征每个都有一打 defs,并且名称 x、y 和 z 要长得多。写出案例类意味着我必须将所有这些重写为MyClass 的参数。
有没有办法根据我扩展的特征自动生成x: Int, y: Boolean, z: String 构造函数部分?
【问题讨论】:
-
好吧,您可以使用案例类中的 def 覆盖 def。在这种情况下,您不必首先生成这些 val。您的 trait 的所有实现是否也有其 def 的 val 实现?如果是这种情况,那么为什么首先将其作为 def 而不是 val?
-
@tkachuko 假设我到处都有
val而不是def,这有什么帮助? -
它有助于进入您尝试解决的上下文。你需要某种宏工具:你检查过这里提到的库吗:stackoverflow.com/questions/22850340/…?
标签: scala