在Scala中声明类字段的一致方法

时间:2012-10-13 06:45:51

标签: scala constructor

这经常让我感到困惑:

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

我想以同样的方式声明我的所有val / vars,我真的不明白为什么这个会扰乱Scala编译器。除此之外,其他地方按预期执行。

  1. 是否有充分的理由说明为什么它不会让我加入这个
  2. 是否更好的方式 / 解决方法 / Scala方式

2 个答案:

答案 0 :(得分:9)

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

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

甚至更好:

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

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

答案 1 :(得分:3)

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