Scala案例类和构造函数
我发现自己写了很多样板代码。比如说我有以下特点Scala案例类和构造函数,scala,Scala,我发现自己写了很多样板代码。比如说我有以下特点 trait Foo { def x: Int } trait Bar { def y: Boolean def z: String } 然后我想要一个case类,它不多也不少地实现这些 case class MyClass(x: Int, y: Boolean, z: String) extends Foo with Bar 这看起来并不烦人,但现在想象一下,我的特征每个都有十几个defs,并且名称x、y、和z要长得多。写出cas
trait Foo {
def x: Int
}
trait Bar {
def y: Boolean
def z: String
}
然后我想要一个case类,它不多也不少地实现这些
case class MyClass(x: Int, y: Boolean, z: String) extends Foo with Bar
这看起来并不烦人,但现在想象一下,我的特征每个都有十几个def
s,并且名称x
、y
、和z
要长得多。写出case类意味着我必须将所有这些都重写为MyClass
的参数
有没有一种方法可以根据我扩展的特性自动生成
x:Int,y:Boolean,z:String
构造函数部分?我想你要找的是一个可以为你处理这项工作的。然后,您可以通过以下方式调用此宏:
@FieldsFromTraits
case class MyClass extends Foo with Bar
然后,注释宏可以使用traits中的信息重写case类
做类似事情的库是。您可以尝试调整该实现。我来看看今晚是否有什么东西不能放在一起。好吧,您可以使用案例类中的def覆盖def。在这种情况下,您不必首先生成这些VAL。您的trait的所有实现是否都有其def的val实现?如果是这样的话,那么为什么一开始就把它作为def而不是val呢?@tkachuko假设我确实到处都是
val
,而不是def
,这有什么帮助呢?它有助于进入您试图解决的上下文。你需要某种宏工具:你检查过这里提到的库了吗?哇!这正是我所想的。我想我要尝试一下这个实现。