在Kotlin中对两个可为null的Int求和的最可读方法是什么?

问题描述 投票:0回答:1

我尝试执行以下操作:

val a: Int? = 1
val b: Int? = 1

a?.plus(b)

但无法编译,原因是plus期望使用Int

我也试图创建一个biLet函数:

fun <V1, V2, V3> biLet(a: V1?, b: V2?, block: (V1, V2) -> V3): V3? {
    return a?.let {
        b?.let { block(a, b) }
    }
}

并像这样使用它:

val result = biLet(a, b) { p1, p2 -> p1 + p2 }

但是似乎很简单的事情似乎需要很多工作。有没有更简单的解决方案?

kotlin nullable
1个回答
1
投票

不幸的是,标准库中已经没有什么东西可以求和两个可为null的整数。

但是,您可以为可为空的operator fun创建一个Int?

operator fun Int?.plus(other: Int?): Int? = if (this != null && other != null) this + other else null

然后,您可以像非空版本一样正常使用它:

val a: Int? = 2
val b: Int? = 3
val c = a + b

如果您不想为其创建函数,则始终可以使用其主体来处理两个int的可为空性。

© www.soinside.com 2019 - 2024. All rights reserved.