gpt4 book ai didi

scala - Scala案例类和构造函数

转载 作者:行者123 更新时间:2023-12-03 22:31:10 37 4
gpt4 key购买 nike

我发现自己在写很多(某种)样板代码。例如说我有以下特征

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


这似乎并不令人讨厌,但是现在想象一下,我的特征每个都有十二个 def,而名称 xyz更长。写出case类意味着我必须将所有这些都重写为 MyClass的参数。

有没有一种方法可以根据我扩展的特征自动生成 x: Int, y: Boolean, z: String构造器部件?

最佳答案

我认为您正在寻找的是可以为您处理此工作的annotation macro。然后,您可以通过编写如下代码来调用此宏:

@FieldsFromTraits
case class MyClass extends Foo with Bar


然后,注释宏可以使用特征中的信息重写案例类。

做类似事情的库是 MetaRest。您可以尝试调整该实现。我看看我今晚不能放一些东西。

关于scala - Scala案例类和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979600/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com