kotlin Elvis 运算符 ?: 的作用
?: 用于返回非null的值,避免调用空的对象,它被称为“安全导航操作符”或“空值合并运算符”。当左侧表达式可能为 null 时,如果其非空,则返回该表达式的值;否则返回右侧的默认值。
下面写一个demo具体说明下
val str = "hello"
val str1 = null
Log.d("======str", str ?: "nice") //打印结果 hello
Log.d("======str1", str1 ?: "nice") //打印结果 nice
通过这个demo 可以看出如果str不为null 返回?:右侧的值,如果是null 返回左侧的值
这个符号简化了kotlin的条件判断
例如 上面的demo 类似下面的判断
if (str != null) Log.d("======str", str) else Log.d("======str", "nice")
demo2
定义一个data数据
data class Book(val name: String?)
调用
val book: Book = Book(null)
val name = book.name ?: "没有定义书的名字"
Log.d("======name", name) //打印结果 没有定义书的名字