我对以下Kotlin声明感到困惑

时间:2017-07-27 12:55:50

标签: kotlin nullable

val s = person.name ?: return

我知道?用于空安全......但是:return做了什么。

2 个答案:

答案 0 :(得分:8)

?:被称为Elvis Operator

val s = person.name ?: return

等于:

val s = if (person.name != null) person.name else return

表示如果person.namenull,则返回。

答案 1 :(得分:2)

?:返回右侧的表达式,以防左侧的表达式为null

在这种情况下,不是给s一个值,而是立即从当前函数返回。您也可以以类似的方式抛出异常,以防某些内容为null并且您无法继续执行您将要执行的操作。

此示例基本上是以下内容的简写(假设名称为String?):

val s: String? = person.name
if(s == null) {
    return 
}
// you can use `s` here as it will be smart cast to `String`