【发布时间】:2021-10-18 13:58:32
【问题描述】:
此代码无法编译。
class MyClass {
var w: String? = "Hello"
init {
if(w!=null) {
println(w.length)
}
}
}
编译器错误:智能转换为“String”是不可能的,因为“w”是一个可变属性,此时本可以更改。 这是什么意思? 类似的代码编译完美。
fun main(args: Array<String>) {
var w: String? = "Hello"
if(w!=null) {
println(w.length)
}
}
它们是相似的,因为根据我的理解,在这两种情况下,变量w 都将被实例化,if 块将紧随其后运行。那么为什么这段代码可以完美编译呢?
【问题讨论】: