Kotlin 面试题
目录

Kotlin 中 Elvis 运算符 (?:) 的作用是什么?

· 约 2 分钟读完 · 第 21 / 200 章

推荐答案

Kotlin 中的 Elvis 运算符 (?:) 用于处理可能为 null 的情况。它的作用是:如果左侧的表达式不为 null,则返回左侧的值;如果左侧的表达式为 null,则返回右侧的值。

本题详细解读

语法

Elvis 运算符的语法如下:

  • expression1 是要检查是否为 null 的表达式。
  • expression2 是在 expression1 为 null 时返回的默认值。

示例

假设我们有一个可能为 null 的字符串变量 name,我们可以使用 Elvis 运算符来提供一个默认值:

在这个例子中,name 是 null,所以 displayName 将被赋值为 "Guest"。

与 if-else 的比较

Elvis 运算符可以看作是 if-else 的简化形式。以下代码展示了如何使用 if-else 实现相同的功能:

使用 Elvis 运算符可以使代码更加简洁和易读。

嵌套使用

Elvis 运算符可以嵌套使用,以处理多层可能为 null 的情况。例如:

在这个例子中,如果 user 为 null 或者 user.name 为 null,userName 将被赋值为 "Unknown"。

注意事项

  • Elvis 运算符的右侧表达式只有在左侧表达式为 null 时才会被求值。
  • 如果右侧表达式是一个函数调用或复杂的表达式,需要注意其副作用和性能影响。

通过使用 Elvis 运算符,可以有效地处理 null 值,减少代码中的 null 检查,使代码更加简洁和健壮。