为什么在Kotlin中没有val / var修饰符的主构造函数中需要一个参数?

时间:2018-04-02 11:52:12

标签: kotlin

如果我创建一个类,我可以传递一个参数:

class Person(name: String) {
}

我也可以编写相同的内容,但是使用val,然后当我创建一个对象时,我将能够使用属性来获取此值。

val person = Person("Name")
person.name

问题是:为什么我只需要一个没有val的参数?我应该在哪里,如何以及为什么使用它?

2 个答案:

答案 0 :(得分:5)

如果在构造函数中使用varval,则表示属性并直接初始化它们。如果不这样做,那些参数将用于初始化目的:

class Customer(name: String) {
    val customerKey = name.toUpperCase()
}

答案 1 :(得分:3)

https://kotlinlang.org/docs/reference/classes.html

在您不希望构造函数参数成为类的命名属性时使用它。

如果您使用val,则会获得只读属性。如果您使用var,则会获得可变属性。否则,你什么也得不到[自动定义]。