阅读Null Safety in Kotlin并很好奇为什么变量链(例如.next
永远不会以bob?.department?.head?.name
结尾-检查最后访问的属性是否不为null(在这种情况下为{{1} }。
我正在做Nullable Types on Kotlin Koans,很好奇为什么答案不能是
?
代替(答案):
name
答案 0 :(得分:1)
如果电子邮件为空或不为空,您仍然必须执行操作。抛出一个假肢?返回?执行else块?什么?
写答案的两种替代方法很接近您想要的
client?.personalInfo?.email ?.let { email ->
if (message != null) { mailer.sendMessage(email, message) }
}
和
val email = client?.personalInfo?.email ?: return
if (message != null) { mailer.sendMessage(email, message) }
答案 1 :(得分:0)
?的含义。可能与您认为的有所不同。它所做的只是在可为空的对象上导航。
那么鲍勃?部门给你一个部门?相反,如果您使用bob.department,则由于bob中的department可为空,则会出现编译错误。
该链不能以?结尾,因为 没有? 。您可以使用 ?。或?:
您有3个选择: