代码之家  ›  专栏  ›  技术社区  ›  user1785730

赋值的惯用方法

  •  0
  • user1785730  · 技术社区  · 5 年前

    val foo = if (getNullableValue() != null) getNullableValue() else computeDefaultValue()
    

    getNullableValue() . 为了摆脱重复,我想到了这个:

    val foo = getNullableValue()?.also{}?: run { computeDefaultValue() }
    

    但不确定这是否是惯用的说法。IDE警告说 also . 有没有更好的方法来实现这一点?

    1 回复  |  直到 5 年前
        1
  •  2
  •   CryptoFool Sachithra Dilshan    5 年前

    这就是猫王的作用:

    val foo  = getNullableValue() ?: computeDefaultValue()
    

    fun getNullableValue1(): Int? {
        return null
    }
    
    fun getNullableValue2(): Int? {
        return 22
    }
    
    fun computeDefaultValue(): Int {
        return 44
    }
    
    println(getNullableValue1() ?: computeDefaultValue())
    println(getNullableValue2() ?: computeDefaultValue())
    

    结果:

    44
    22