在kotlin中使用Elvis运算符中的多行

moh*_*mad 3 android kotlin

我在Android Studio中有这个代码:

    val newUser = !intent.hasExtra("newUser")
    val userData = intent.getParcelableExtra("newUser") ?: UserData()
Run Code Online (Sandbox Code Playgroud)

此代码中存在问题.如果一个额外的,UserData在intent中不存在,如果它的键是"newUser",则newUser变为false但是userData成为新的实例UserData.我正在寻找这样的东西:

val userData = intent.getParcelableExtra("newUser") ?: {
    newUser = true
    UserData()
}
Run Code Online (Sandbox Code Playgroud)

我认为这不起作用但有办法吗?

yol*_*ole 12

您可以在run函数中包含块:

val userData = intent.getParcelableExtra("newUser") ?: run {
    newUser = true
    UserData() 
}
Run Code Online (Sandbox Code Playgroud)