Kotlin:不允许在辅助构造函数参数上使用'val'

Jan*_*ski 6 constructor kotlin

我有以下课程:

class Person(val name: String) {
    private var surname: String = "Unknown"

    constructor(name: String, surname: String) : this(name) {
        this.surname = surname
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我想在第二个构造函数中使用name参数不可变时:

constructor(val name: String, surname: String) : this(name) {
    this.surname = surname
}
Run Code Online (Sandbox Code Playgroud)

我有以下编译时错误:

Kotlin:不允许在辅助构造函数参数上使用'val'

有人可以解释为什么Kotlin编译器不允许这样做?

yol*_*ole 22

Kotlin中的参数总是不可变的.将构造函数参数标记为val将其转换为类的属性,这只能在主构造函数中完成,因为类的属性集不能根据用于创建类实例的构造函数而变化.