Kotlin如何使用for循环初始化数组实现动态解构赋值
Kotlin 列表转换与解构赋值实现
对应Python列表推导式的写法
Python里用列表推导式做批量元素转换的逻辑,在Kotlin中通过集合的map扩展函数实现,二者效果完全对等:
# Python 示例代码 mylist = [1, 2] items = [value * 2 for value in mylist]
// Kotlin 等价实现 val mylist = mutableListOf(1, 2) val items = mylist.map { it * 2 }
map会逐一遍历原集合元素,执行传入的Lambda逻辑后返回全新的集合。Lambda单参数可以直接用默认名称it指代当前遍历元素,也可以显式定义参数名,写法为mylist.map { value -> value * 2 },和Python列表推导式的逻辑一一对应。
动态生成解构赋值右侧值
你用的val (first, second) = xxx是Kotlin的解构声明语法,Kotlin的List和数组类型默认支持前5个元素的解构,不需要手动把转换后的元素逐个填入arrayOf(),直接把map转换后的结果放在等号右侧就能完成赋值:
val mylist = mutableListOf(1, 2) // 直接解构转换后的列表即可 val (first, second) = mylist.map { it * 2 } // 如果业务场景明确需要数组类型,加toTypedArray()转换即可 // val (first, second) = mylist.map { it * 2 }.toTypedArray()
上述代码执行后,first的值为2,second的值为4,完全符合需求。
注意:解构的变量数量不能超过原集合/数组的实际元素长度,否则会抛出索引越界异常,使用前请确认集合长度和待解构变量数匹配。
内容的提问来源于stack exchange,提问作者Kaita John
相关产品推荐
相关产品推荐

