填充可变参数的正确方法是什么?我的尝试看起来像自行车
首先我构建范围
然后我将其转换为列表
然后到 intarray
然后传播它
m.getColumns(*((count.. count + 35).toList().toIntArray()))
其中 getColumns 是一种接受列索引作为可变参数的方法
是的,从这个意义上说,范围确实与数组相距甚远,将它们传递为相当困难vararg
参数。
您可以创建一个函数将它们转换为IntArray
实例速度快了一步:
fun IntRange.toIntArray() = this.toList().toIntArray()
m.getColumns(*(count..count + 35).toIntArray())
此转换的稍微更好的优化版本:
fun IntRange.toIntArray(): IntArray {
val size = this.last - this.first + 1
var current = this.first
return IntArray(size) { current++ }
}
或者你可以定义一个重载函数,它需要一个IntRange
并进行转换以调用原始内容:
fun getColumns(range: IntRange) = getColumns(*range.toList().toIntArray())
同样,这也可以利用上面的转换方法来获得更好的性能:
fun getColumns(range: IntRange) = getColumns(*range.toIntArray())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)