1

在下面的代码中,我试图创建一个 getter 方法作为支持字段。因此,当调用 getLastNameLen 属性时,它应该返回 lastNameset 的长度。

请参考下面的代码并帮助我修复错误。

如何显示支持字段的输出

代码

class Thomas (val nickname: String?, val age : Int?) {

    //backing field 1
    var lastName : String? = null
        set(value) {
            if (value?.length == 0) throw IllegalArgumentException("negative values are not allowed")
            field = value
            println("lastname backing field set: ${field} ")
        }

    val getLastNameLen
        get() = {
            this.lastName?.length
        }
}

输出

lastname backing field set: jr.stephan 
lastName is jr.stephan
lastNameLen is () -> kotlin.Int?
4

1 回答 1

3

这是因为您正在使用 = 运算符,它将 getter 设置为 lambda。

你有两个选择:

val getLastNameLen
    get() {
        return this.lastName?.length
    }

或者

val getLastNameLen
    get() = this.lastName?.length

基本上在生成getter函数之后使用方括号get(),或者如果你可以在一行中使用=,get()但不要在后面包含,{}否则它将把它当作一个lambda

于 2019-08-14T19:00:21.790 回答