Kotlin 改进中缀为空或空

Kotlin 改进中缀为空或空,kotlin,infix-notation,Kotlin,Infix Notation,我试图通过使用中缀来改进一些代码: 工作代码(但有点难看…): 我想提高可读性,如下所示: fun test (possibleEmptyString: String?, anotherPossibleEmptyString : String?): String { return (possibleEmptyString orIfNullOrEmpty anotherPossibleEmptyString orIfNullOrEmpty "a known string")!! } in

我试图通过使用中缀来改进一些代码:

工作代码(但有点难看…):

我想提高可读性,如下所示:

fun test (possibleEmptyString: String?, anotherPossibleEmptyString : String?): String {
    return (possibleEmptyString orIfNullOrEmpty anotherPossibleEmptyString orIfNullOrEmpty "a known string")!!
}

infix fun String?.orIfNullOrEmpty(other: String?): String? {
    if (this != null && !"".equals(this)) {
        return this
    }

    return other
}

它可以工作,但我认为它可以改进

它可以简化如下:

infix fun String?.orIfNullOrEmpty(other: String?) = 
    takeUnless { it.isNullOrBlank() } ?: other
如果
this
take,除非在本例中,{}
可以直接在
this
上调用,因为扩展名)不为null或空白,否则为
other


请注意,Kotlin已经有了
isNullOrBlank
和类似的扩展。

可以这样简化:

infix fun String?.orIfNullOrEmpty(other: String?) = 
    takeUnless { it.isNullOrBlank() } ?: other
如果
this
take,除非在本例中,{}
可以直接在
this
上调用,因为扩展名)不为null或空白,否则为
other


请注意,Kotlin已经有了
isNullOrBlank
和类似的扩展。

对于堆栈溢出来说,询问如何改进此代码有点宽泛(在哪方面?可读性、内存、CPU周期、大小等等)。您可能想查看我们的姐妹站点,请确保首先查看他们的规则,以便根据他们的站点定制您的问题。@PaulStenne:我会查看这个站点,不知道它存在(真丢脸!)很好,我很高兴您会发现它=对于堆栈溢出来说,询问如何改进此代码有点宽泛(在哪方面?可读性、内存、CPU周期、大小等?)。你可能想查看我们的姐妹网站,确保先查看他们的规则,以便根据他们的网站定制你的问题。@PaulStenne:我会查看这个网站,不知道它存在(真丢脸!)很好,我很高兴你能发现它=D