使用长变量处理Kotlin数组
我有一个关于科特林的问题。 我尝试了Kotlin的两个版本,1.0.0和1.2.6。 使用Kotlin,我们可以像这样初始化数组并访问其元素使用长变量处理Kotlin数组,kotlin,Kotlin,我有一个关于科特林的问题。 我尝试了Kotlin的两个版本,1.0.0和1.2.6。 使用Kotlin,我们可以像这样初始化数组并访问其元素 val n: Int = 10 val arr = Array(n, { it } ) val i: Int = 0 println(arr[i]) 但是,我在这段代码中遇到了一个错误 val n: Long = 10 val arr = Array(n, { it } ) val i: Long = 0 println(arr[i]) val n:
val n: Int = 10
val arr = Array(n, { it } )
val i: Int = 0
println(arr[i])
但是,我在这段代码中遇到了一个错误
val n: Long = 10
val arr = Array(n, { it } )
val i: Long = 0
println(arr[i])
val n: Long = 10
val arr = Array(n.toInt(), { it } )
val i: Long = 0
println(arr[i.toInt()])
为了编译这段代码,这似乎是将Long转换为Int的唯一方法
val n: Long = 10
val arr = Array(n, { it } )
val i: Long = 0
println(arr[i])
val n: Long = 10
val arr = Array(n.toInt(), { it } )
val i: Long = 0
println(arr[i.toInt()])
然而,这对我来说似乎太多余了,但我找不到任何解决方案。所以我的问题是
Kotlin附带了
longArrayOf(1,2,3)
,它将为您创建一个包含Long
s的数组
请注意,您试图使用println(arr[i])
从arr
中获取一个Long
值,但是数组的索引是使用Int
s完成的。它永远不会与Long
s一起工作:
/**
* Returns the array element at the given [index].
* This method can be called using the index operator.
*/
public operator fun get(index: Int): Long
如果要初始化给定长度的长数组,可以使用相同的顶级
array
函数:
val n = 10 // n is Int
val arrayOfLongs = Array(n) { it.toLong() } // Array of 10 longs
这里的数字n
是Int
,初始化器函数将被初始化元素的整数索引it
转换为Long
,因此我们得到一个Long数组作为结果
或者,您可以使用另一个类似的函数来创建专用的长数组
:
val longArray = LongArray(n) { it.toLong() } // LongArray of 10 longs
这两个数组都存储Long,但后者更紧凑。数组索引是使用
Int
s完成的,它不适用于Long
s。JVM数组索引总是Int
s。您将始终必须将其转换为int。