这经常困扰我:
class Test(i: Int) {
val this.i = i;
val this.ii = i; // :(
}
我想以同样的方式声明我所有的 vals/vars,我真的不明白为什么这会扰乱 Scala 编译器。除此处外,其他任何地方都按预期执行。
- 有充分的理由为什么它不让我打这个吗?
- 有没有更好的方法/解决方法/ Scala 方法?
这经常困扰我:
class Test(i: Int) {
val this.i = i;
val this.ii = i; // :(
}
我想以同样的方式声明我所有的 vals/vars,我真的不明白为什么这会扰乱 Scala 编译器。除此处外,其他任何地方都按预期执行。
您在该范围内声明的每个变量都将成为一个字段。所以它不需要特殊的语法。
class Test(_i: Int) {
val i = _i
val ii = i
}
甚至更好:
class Test(val i: Int) {
val ii = i
}
您可以使用任何一种方式编写它,具体取决于您是要使用更清晰更小的代码还是“一致”的代码。
scala 的方式是不使用this
. 为什么在 Java 中使用它?为了清楚地表明您正在访问实例的成员而不是静态成员。这在 Scala 中不是必需的,因为没有静态成员,并且伴生对象的成员无论如何都需要以伴生对象的名称作为前缀。