使用scala构造函数设置trait中定义的变量

2024-02-26

如果我理解正确的话,traits 是最接近 Java 接口的东西,类构造函数会自动设置变量。

但是,如果我有一个扩展特征的类,并且有一个从特征设置变量的构造函数,那么像:

trait Foo {
    var foo: String
}

class Bar (foo: String) extends Foo { /* ... */ }

我想要的地方foo当我制作时设置的特征字符串Bar object.

编译器似乎给了我关于此的错误。实现这一目标的正确方法是什么?


trait Foo { var foo: String = _ }
class Bar(foo0: String) extends Foo { foo = foo0 }

该特征声明了一个未初始化的变量;然后该类将其设置为等于输入参数。

或者,

trait Foo {
  def foo: String
  def foo_=(s: String): Unit
}
class Bar(var foo: String) extends Foo {}

声明与 foo 相对应的 getter/setter 对,它们由类设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用scala构造函数设置trait中定义的变量 的相关文章

随机推荐