gpt4 book ai didi

kotlin - 使用少于预期的组件进行组件解构

转载 作者:行者123 更新时间:2023-12-02 12:34:10 28 4
gpt4 key购买 nike

假设我想做以下事情:

val (k, v) = pair.split("=".toRegex(), 2)

如果我总是从拆分中获取 2 个组件,则此代码很好 - 但是,如果字符串中不存在分隔符,则此代码将引发异常,因为数组中的第二个元素不存在。

答案几乎肯定是“否”,但是否有某种方法可以强制解构将空值分配给缺失的组件?

最佳答案

解构对象时,Kotlin 调用 componentN()对于那个对象。对于数组,component1()等于 get(0) , component2()等于 get(1) , 等等。

所以如果索引越界,它会抛出 ArrayIndexOutOfBoundsException , 而不是返回 null .

但是你可以 使您的运算符功能如下:

operator fun <T> Array<out T>.component1(): T? = if (size > 0) get(0) else null
operator fun <T> Array<out T>.component2(): T? = if (size > 1) get(1) else null

所以如果我跑
val (k, v) = arrayOf(1)

println(k)
println(v)

输出将是
1
null

看:
  • Destructuring Declarations
  • 关于kotlin - 使用少于预期的组件进行组件解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51587403/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com