我有以下课程:
class Thing {
var privateName = ""
def name = privateName
def name_=(newName: String) {
if (!newName.trim().isEmpty()) {
privateName = newName.trim()
}
}
}
如果我将name_方法定义为(注意" ="附近的其他空格):
def name_ = (newName: String) {
if (!newName.trim().isEmpty()) {
privateName = newName.trim()
}
然后编译器抱怨"值newName"没找到。
有人能解释一下这里发生了什么吗?
答案 0 :(得分:2)
首先,您的方法名称为name_=
,并将参数声明为newName
。您对返回Unit
的方法使用类似java的语法,即将方法定义为{...}
而不是= ...
。
第二个名称是name_
,没有参数,而=
之后的定义以名为newName
的字符串开头......并且它没有'得到任何进一步因为这不是范围内的值。