【问题标题】:Kotlin Set to Null If Not NullKotlin 设置为 Null 如果不是 Null
【发布时间】:2017-06-13 00:42:44
【问题描述】:

在 Kotlin 中是否有一个习惯用法可以将一个变量设置为 null,如果它还不是 null?在语义上更令人愉悦的是:

var test: String? = null
if(test != null) test = null

【问题讨论】:

    标签: null kotlin


    【解决方案1】:

    您可以使用execute if not null idiom:

    test?.let { test = null }
    

    【讨论】:

      【解决方案2】:

      只需将 null 分配给局部变量:

      test = null
      

      如果它不为 null - 您将 null 分配给此变量。 如果变量为 null - 您只需将 null 分配给它,所以没有任何改变。

      【讨论】:

      • 1) 我建议将此作为对问题的评论而不是作为答案,因为这实际上并不能回答问题。 2)如果它为空 - 确实发生了一些事情:分配。对于简单的属性,将其设置为null 不是问题,但对于具有支持属性等的属性,我可以理解为什么人们可能只想将其设置为null,如果它还不是null。跨度>
      • 但是我们有具体案例定义的变量,而不是属性。
      • 是的。也许您可以澄清一下,如果是null,则确实会发生赋值,但它只是将变量设置为相同的值:null
      • 我知道这是更好的方法,但我特意询问的是 Kotlin 习语。
      【解决方案3】:

      我想出了这个扩展,它使这变得更简单:

      inline fun <T, R> T.letThenNull(block: (T) -> R): T? { block(this); return null }
      val test: Any? = null
      ...
      test = test?.letThenNull { /* do something with test */ }
      

      【讨论】:

        猜你喜欢
        • 2022-11-29
        • 2018-09-23
        • 2016-09-05
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 2022-12-14
        • 1970-01-01
        相关资源
        最近更新 更多