【发布时间】:2015-03-01 00:40:41
【问题描述】:
我有一个带有 getter/setter 的课程:
class Person {
private var _age = 0
//getter
def age = _age
//setter
def age_=(value: Int): Unit = _age = value
}
我们知道我们可以像这样调用setter方法:
val p = new Person()
p.age= (2)
p age= 11
p.age= 8-4
在这种情况下有趣的是:def age_= 中的下划线 (_) 可以在调用该方法时删除。
我的问题是,在这种情况下,下划线是做什么用的?
有人告诉我它用于分隔标识符中的非字母字符。所以我尝试了这个:
var x_= = 20
x_= = 10
x= = 5 // I got error here
为什么在这种情况下我不能删除下划线?
另外,如果我多次尝试使用下划线:
val x_=_x = 1
我也遇到了编译错误。
是否有关于下划线用法的规则以及这种下划线用法的术语是什么?
【问题讨论】:
-
查看stackoverflow.com/questions/8000903/… 了解 Scala 中下划线的其他用法。 This 答案还解释了赋值运算符覆盖的工作原理。
标签: scala getter-setter magic-methods syntactic-sugar