欢迎光临
我们一直在努力

Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数

orEmpty 函数

1、基本介绍
  • orEmpty 函数是一个用于处理可空对象的扩展函数,当对象为 null 时,它会返回一个对应类型的空实例
  • 字符串 String?,当为 null 时返回空字符串 "",返回类型为 String
  • @kotlin.internal.InlineOnly
    public inline fun String?.orEmpty(): String = this ?: ""

  • 列表 List<T>?,当为 null 时返回空列表 [],返回类型为 List<T>
  • @kotlin.internal.InlineOnly
    public inline fun <T> List<T>?.orEmpty(): List<T> = this ?: emptyList()

  • 集合 Set<T>?,当为 null 时返回空集合 [],返回类型为 Set<T>
  • @kotlin.internal.InlineOnly
    public inline fun <T> Set<T>?.orEmpty(): Set<T> = this ?: emptySet()

  • 映射 Map<K, V>?,当为 null 时返回空映射 {},返回类型为 Map<K, V>
  • @kotlin.internal.InlineOnly
    public inline fun <K, V> Map<K, V>?.orEmpty(): Map<K, V> = this ?: emptyMap()

  • 数组 Array<T>?,当为 null 时返回空数组 [],返回类型为 Array<T>
  • public actual inline fun <reified T> Array<out T>?.orEmpty(): Array<out T> = this ?: emptyArray<T>()

    2、基本使用
  • 字符串 String?
  • val s: String? = null

    println(s.orEmpty())
    println(s.orEmpty().length)

    # 输出结果

    0

  • 列表 List<T>?
  • val list: List<Int>? = null

    println(list.orEmpty())
    println(list.orEmpty().size)

    # 输出结果

    []
    0

  • 集合 Set<T>?
  • val set: Set<String>? = null

    println(set.orEmpty())
    println(set.orEmpty().size)

    # 输出结果

    []
    0

  • 映射 Map<K, V>?
  • val map: Map<Int, String>? = null

    println(map.orEmpty())
    println(map.orEmpty().size)

    # 输出结果

    {}
    0

  • 数组 Array<T>?
  • val arr: Array<Int>? = null

    println(arr.orEmpty().contentToString())
    println(arr.orEmpty().size)

    # 输出结果

    []
    0


    ifEmpty 函数、ifBlank 函数、takeIf 函数

    val handleContent = if (etHandleContent.text.toString().isEmpty()) {
    null
    } else {
    etHandleContent.text.toString()
    }

    val handleContent = if (etHandleContent.text.toString().isBlank()) {
    null
    } else {
    etHandleContent.text.toString()
    }

  • 这个 Kotlin 代码在功能上完全等同于 Java 的三元运算符
  • String handleContent = etHandleContent.getText().toString().isEmpty() ? null : etHandleContent.getText().toString();

    String handleContent = etHandleContent.getText().toString().isBlank() ? null : etHandleContent.getText().toString();

  • 代码还可以更简洁,如果为空字符串则返回 null
  • val handleContent = etHandleContent.text.toString().ifEmpty { null }

    val handleContent = etHandleContent.text.toString().ifBlank { null }

  • 也可以使用 takeIf 函数,如果满足条件则返回自身,否则返回 null
  • val handleContent = etHandleContent.text.toString().takeIf { it.isNotEmpty() }

    val handleContent = etHandleContent.text.toString().takeIf { it.isNotBlank() }

    赞(0)
    未经允许不得转载:171主机测评 » Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址