填充可变参数的正确方法是什么?我的尝试看起来像是一次小事
拳头我构造范围
然后我将其转换为列表
然后到intarray
然后传播
m.getColumns(*((count.. count + 35).toList().toIntArray()))
其中getColums是一种将colums索引接受为varargs的方法
最佳答案
是的,从这个意义上说,范围实际上离数组很远,很难将它们作为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())