在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
当前回答
这里有一个简单的例子
val id_1: Int = 1
val ids: IntArray = intArrayOf(id_1)
其他回答
初始化数组:val paramValueList: array <String?> = arrayOfNulls<String>(5)
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
详见Kotlin -基本类型。
你也可以提供一个初始化函数作为第二个参数:
val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]
你可以像这样创建一个Int数组:
val numbers = IntArray(5, { 10 * (it + 1) })
5是Int数组的大小。函数是元素init函数。“it”范围在[0,4],加上1 make范围在[1,5]
原点函数为:
/**
* An array of ints. When targeting the JVM, instances of this class are
* represented as `int[]`.
* @constructor Creates a new array of the specified [size], with all elements
* initialized to zero.
*/
public class IntArray(size: Int) {
/**
* Creates a new array of the specified [size], where each element is
* calculated by calling the specified
* [init] function. The [init] function returns an array element given
* its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
...
}
定义在Arrays.kt中的IntArray类
I think one thing that is worth mentioning and isn't intuitive enough from the documentation is that, when you use a factory function to create an array and you specify it's size, the array is initialized with values that are equal to their index values. For example, in an array such as this: val array = Array(5, { i -> i }), the initial values assigned are [0,1,2,3,4] and not say, [0,0,0,0,0]. That is why from the documentation, val asc = Array(5, { i -> (i * i).toString() }) produces an answer of ["0", "1", "4", "9", "16"]
Kotlin有专门的类来表示基本类型的数组,没有装箱开销。例如- IntArray, ShortArray, ByteArray等。我需要说明,这些类与父Array类没有继承关系,但它们具有相同的方法和属性集。它们中的每一个都有相应的工厂函数。所以,要在Kotlin中初始化一个数组,你只需要键入以下内容:
val myArr: IntArray = intArrayOf(10, 20, 30, 40, 50)
...或者这样:
val myArr = Array<Int>(5, { i -> ((i + 1) * 10) })
myArr.forEach { println(it) } // 10, 20, 30, 40, 50
现在你可以使用它:
myArr[0] = (myArr[1] + myArr[2]) - myArr[3]