【发布时间】:2019-12-14 04:25:30
【问题描述】:
class Greeter(name: String) {
fun greet() {
println("Hello, $name")
}
}
fun main(args: Array<String>) {
Greeter(args[0]).greet()
}
对于上面的程序,我得到了这个错误
Unresolved reference: name
但是当我添加 var 或 val 时
class Greeter(var name: String) {
或
class Greeter(val name: String) {
然后程序工作正常,那么为什么我需要在名称中添加 var 或 val,构造函数参数 val 或 var 的默认类型是什么以及为什么当我没有提及 var 或 val 时程序给我错误
【问题讨论】:
-
因为添加
val或var也会使参数成为属性。如果没有任何一个关键字,参数只是一个参数,因此只能在初始化期间访问。见kotlinlang.org/docs/reference/classes.html#constructors