Pau*_*sev 6 extension-methods kotlin
我想创建一个类似 Kotlin 的 ifEmpty() 的函数,它也会检查 null:
ifNullOrEmpty{
//some code if null or empty
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
有谁知道下面的代码叫什么?
: R where C : CharSequence, C : R
Run Code Online (Sandbox Code Playgroud)
Kotlin ifEmpty() 函数的示例。
@SinceKotlin("1.3")
@kotlin.internal.InlineOnly
public inline fun <C, R> C.ifEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =
if (isEmpty()) defaultValue() else this
Run Code Online (Sandbox Code Playgroud)
感谢,并有一个愉快的一天!
正如其他答案中所解释的,您不能使用ifNullOrEmpty()与 中类似的通用逻辑进行创建ifNull(),因为您需要@InlineOnly当前是内部的并且只能由 stdlib 使用。
如果您不介意使用内部组件和编写可能不向前兼容的代码,您可以利用一个小技巧:
@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
@kotlin.internal.InlineOnly
public inline fun <C, R> C.ifNullOrEmpty(defaultValue: () -> R): R where C : CharSequence, C : R =
if (isNullOrEmpty()) defaultValue() else this
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用@Joffrey 提供的“不太通用”的实现,这对于大多数用例来说应该足够了。
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |