【问题标题】:check if null and do something检查是否为空并做某事
【发布时间】:2023-03-18 03:55:01
【问题描述】:

我是 Kotlin 的新手,我正试图弄清楚如果变量为空该怎么办。这就是我想做的事情

private var loggedInUser: User? = null

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

这是用户类

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())

【问题讨论】:

    标签: kotlin null-check


    【解决方案1】:

    根据您对User 类的定义,如果未提供activities 参数的值,它将使用默认值。由于hashMapOf() 永远不会返回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,则它使用?: 之后提供的值,否则返回左侧给出的值。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2013-09-21
      相关资源
      最近更新 更多