具有 Mixin 特征的 Scala 案例类
我正在尝试使用特征作为案例类的混合。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为
Team("name")
实际上是对Team.apply("name")
的方法调用,它在 apply 方法中创建对象。使用
new
关键字创建对象应该可以解决问题:Because
Team("name")
is actually a method call toTeam.apply("name")
, which create the object inside the apply method.Create the object using
new
keyword should do the trick: