这经常让我感到困惑:
class Test(i: Int) {
val this.i = i;
val this.ii = i; // :(
}
我想以同样的方式声明我的所有val / vars,我真的不明白为什么这个会扰乱Scala编译器。除此之外,其他地方此按预期执行。
答案 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中不是必需的,因为没有静态成员,并且伴随对象的成员无论如何都需要以伴随对象的名称作为前缀。