[Kotlin学习] ?:表达式的使用

问题描述

在Kotlin代码中,常常能看到代码形如:

val userId = ctx.session?.userId ?: throw BizException("no_session_user_for_db_policy")

其中的?.?:运算符究竟是什么意思呢?

解答

第一个问号不难理解,就是在对于某个可能为空的量的一个判断。定义变量时,可在类型后面加一个问号?,表示该变量是Nullable,不加表示该变量不可为null。

关于示如果它的左侧是null值,则返回右侧,作为后退。否则它只返回左侧的值。

a ?: b只是if (a != null) a else b的简写。

更多类似代码块:

val x: String? ="foo"
val y: String = x ?:"bar"      //"foo", because x was non-null    

val a: String? = null
val b: String = a ?:"bar"      //"bar", because a was null

你可能感兴趣的:(问题解决)