具有 Mixin 特征的 Scala 案例类

发布于 2024-11-02 19:04:18 字数 266 浏览 1 评论 0原文

我正在尝试使用特征作为案例类的混合。

case class Team(name:String)

trait WinStreak{}

我想这样使用它:

val team = Team("name") with WinStreak

显然我不能这样做。这是因为案例类使用伴随对象来创建类的实例吗?我知道另一个解决方案是扩展我的类定义中的特征,但我想知道是否可以创建它 mixin 风格。

I am trying to use a trait as a mixin with a case class.

case class Team(name:String)

trait WinStreak{}

and I would like to use it like so:

val team = Team("name") with WinStreak

Apparently I cannot do this. Is this because case classes use the companion object to create an instance of your class? I know the other solution would be to just extend the trait in my class def, but I would like to know if its possible to create it mixin style.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅黛梨妆こ 2024-11-09 19:04:18

因为 Team("name") 实际上是对 Team.apply("name") 的方法调用,它在 apply 方法中创建对象。

使用 new 关键字创建对象应该可以解决问题:

case class Team(name:String)
trait WinStreak{}

val x = new Team("name") with WinStreak

Because Team("name") is actually a method call to Team.apply("name"), which create the object inside the apply method.

Create the object using new keyword should do the trick:

case class Team(name:String)
trait WinStreak{}

val x = new Team("name") with WinStreak
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文