我查看了Kotlin 网站上的文档,只有两个控制流表达式:if和when.
if:表达式需要有一个
else分支
when:的
else,如果没有其他满足分支条件分支评估。如果when用作表达式,则else分支是强制性的,除非编译器可以证明所有可能的情况都包含分支条件。
所以好像没有办法在不覆盖所有分支的情况下做一个Control-Flow表达式,是不是?如果没有,有什么办法可以让Control-Flow表达式漏掉一些分支;如果是这样,为什么?
会出现以下代码 if must have both main and 'else' branches if used as an expression
override fun onReceive(context: Context?, intent: Intent?) {
intent?.let {
if (it.action == MySDK.BROADCAST_ACTION_LOGIN) {
mListener.get()?.loggedOn(LoggedOnUserInfo.IT)
}else if (it.action == MySDK.BROADCAST_ACTION_LOGOUT) {
// Occur 'if must have both main and 'else' branches if used as an expression'
mListener.get()?.loggedOut(LoggedOutUserInfo())
} …Run Code Online (Sandbox Code Playgroud)