Elvis操作符
当我们有一个可为空的引用r时,我们可以说如果r不为空则使用它,否则我们使用一些非空的值X:
val l: Int = if (b != null) b.length else -1
上述的表示方式可以使用Elvis操作符来简化,表示方式为?:
val l = b?.length ?: -1
如果?:表达式的左边不为空,Elvis操作符将返回其结果;否则返回右边表达式的值。需要注意的是右边表达式的值仅仅是在左边表达式为空的情况下才会计算。
需要注意的是throw和return都是Kotlin中的表达式,它们都可以使用在右边的表达式中。这将非常方便,比如,检查函数类型时:
fun foo(node: Node): String? {
val parent = node.getParent() ?: return null
val name = node.getName() ?: throw IllegalArgumentException("name expected")
// ...
}