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