我有个关于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])为了编译这段代码,它似乎是将Long强制转换到Int的唯一方法。
val n: Long = 10
val arr = Array(n.toInt(), { it } )
val i: Long = 0
println(arr[i.toInt()])然而,这似乎是多余的,但我找不到任何解决办法。所以我的问题是
发布于 2018-10-10 13:40:00
Kotlin附带了longArrayOf(1, 2, 3),它将为您创建一个包含Long的数组。
请注意,您试图使用println(arr[i])的是从arr中获取一个Long值,但是数组的索引是用Int完成的。
/**
* Returns the array element at the given [index].
* This method can be called using the index operator.
*/
public operator fun get(index: Int): Long发布于 2018-10-13 01:15:54
如果要初始化给定长度的多头数组,可以使用相同的顶级Array函数:
val n = 10 // n is Int
val arrayOfLongs = Array(n) { it.toLong() } // Array of 10 longs这里的数字n是Int,初始化器函数将被初始化的元素的整数索引it转换为Long,因此我们得到了一个longs数组。
或者您可以使用另一个类似的函数来创建一个专门的LongArray。
val longArray = LongArray(n) { it.toLong() } // LongArray of 10 longs这两个数组都存储longs,但后者的存储比较紧凑。
https://stackoverflow.com/questions/52741496
复制相似问题