检查是否为空并做一些事情

check if null and do something

我是 Kotlin 的新手,我正在尝试弄清楚如果变量为 null 时如何做某事。这就是我想要做的

private var loggedInUser: User? = null

fun createActivity(activity: Activity) {
    loggedInUser?.activities?.put(activity.id, activity)
    //set loggedInUser.activities = hashMapOf() if null
}

这是用户 class

data class User(
        val firstname: String = "",
        val lastname: String = "",
        val email: String = "",
        val password: String = "",
        val id: String = UUID.randomUUID().toString(),
        val activities: MutableMap<String, Activity> = hashMapOf())

根据您对 User class 的定义,如果未提供 activities 参数的值,它将使用默认值。由于 hashMapOf() 永远不会 return null,因此您不必担心这一点。此外,activities 是一个 val 而不是可空类型,所以如果你有一个非空的 User,你就有一个非空的 activities.

如果您希望在结果为空时设置一些值,请查看 Elvis Operator:

data class User(val name: String, val friend: User? = null)
fun main() {
    val x: User? = User("X")
    val y: User? = User("Y", x)
    val friendOfFriend = y?.friend?.friend?.name ?: "No friend"
    println(friendOfFriend) // Outputs "No friend" because x.friend was null
}

如果该调用链中的任何值是 null,它将使用 ?: 之后提供的值,否则它 return 是左侧给出的值。

当然,这只是最惯用的方式。你也可以这样做:

if (activities == null) {
    // something
}

或任何其他传统空值检查。