0

这经常困扰我:

class Test(i: Int) {
  val this.i = i;
  val this.ii = i; // :(
}

我想以同样的方式声明我所有的 vals/vars,我真的不明白为什么会扰乱 Scala 编译器。除此处外,其他任何地方都预期执行。

  1. 有充分的理由为什么它不让我打这个吗?
  2. 有没有更好的方法/解决方法/ Scala 方法
4

2 回答 2

9

您在该范围内声明的每个变量都将成为一个字段。所以它不需要特殊的语法。

class Test(_i: Int) {
  val i = _i
  val ii = i
}

甚至更好:

class Test(val i: Int) {
  val ii = i
}

您可以使用任何一种方式编写它,具体取决于您是要使用更清晰更小的代码还是“一致”的代码。

于 2012-10-13T07:09:10.367 回答
3

scala 的方式是不使用this. 为什么在 Java 中使用它?为了清楚地表明您正在访问实例的成员而不是静态成员。这在 Scala 中不是必需的,因为没有静态成员,并且伴生对象的成员无论如何都需要以伴生对象的名称作为前缀。

于 2012-10-13T06:52:13.277 回答