Kotlin - 可空 属性 默认为空值
Kotlin - nullable property default to null value
假设我用 nullable 属性
定义了 class
class ABC {
var myProperty: String? = null
}
有没有办法将其默认为空值?
也许类似于 SCALA?
var myProperty: String? = _ // compilation error
或简单地:
var myProperty: String? // compilation error
我知道我们可以使用来自 Kotlin 1.2 的 lateinit 变量,稍后可以像这样检查初始化:
lateinit var myProperty: String
if (::myProperty.isInitialized) {
//value is not-null
}
那么 lateinit 是首选方式吗?可以默认为空值还是故意省略?
Kotlin 有意要求您显式初始化所有属性。没有 shorthand 语法。对于可空类型的 属性,首选方法不是使用 lateinit
,而是使用 null
初始化程序声明它。
lateinit
属性的 isInitialized
方法旨在处理资源清理等复杂情况;对于想要节省编写 = null
作为 属性 声明的一部分的用户,它不打算用作 null
检查的替代品。
简短的回答是否定的。
与其他一些语言(Scala、Go)不同,Kotlin 并不假设它最清楚该类型的默认值是什么(谁说 int 应该是 0?)
你也可以声明一个全局函数
fun nullString(): String? {
return null
}
并像
一样使用它
class ABC {
var myProperty = nullString()
}
由于语言中只有一个空引用,全局变量也可以工作
var nullString : String? = null
class ABC {
var myProperty = nullString
}
P.S。 -
不幸的是,像 '_' 这样的空格字符在 Kotlin 中是保留的,所以你不能用它来命名你的变量并创建 var myProperty = _
假设我用 nullable 属性
定义了 classclass ABC {
var myProperty: String? = null
}
有没有办法将其默认为空值? 也许类似于 SCALA?
var myProperty: String? = _ // compilation error
或简单地:
var myProperty: String? // compilation error
我知道我们可以使用来自 Kotlin 1.2 的 lateinit 变量,稍后可以像这样检查初始化:
lateinit var myProperty: String
if (::myProperty.isInitialized) {
//value is not-null
}
那么 lateinit 是首选方式吗?可以默认为空值还是故意省略?
Kotlin 有意要求您显式初始化所有属性。没有 shorthand 语法。对于可空类型的 属性,首选方法不是使用 lateinit
,而是使用 null
初始化程序声明它。
lateinit
属性的 isInitialized
方法旨在处理资源清理等复杂情况;对于想要节省编写 = null
作为 属性 声明的一部分的用户,它不打算用作 null
检查的替代品。
简短的回答是否定的。
与其他一些语言(Scala、Go)不同,Kotlin 并不假设它最清楚该类型的默认值是什么(谁说 int 应该是 0?)
你也可以声明一个全局函数
fun nullString(): String? {
return null
}
并像
一样使用它class ABC {
var myProperty = nullString()
}
由于语言中只有一个空引用,全局变量也可以工作
var nullString : String? = null
class ABC {
var myProperty = nullString
}
P.S。 -
不幸的是,像 '_' 这样的空格字符在 Kotlin 中是保留的,所以你不能用它来命名你的变量并创建 var myProperty = _