在Java中,数组可以这样初始化:

int numbers[] = new int[] {10, 20, 30, 40, 50}

Kotlin的数组初始化是怎样的?


当前回答

老问题了,但如果你想使用一个范围:

var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()

产生几乎相同的结果:

var numbers = Array(5, { i -> i*10 + 10 })

结果:10,20,30,40,50

我认为第一个选项更有可读性。这两个工作。

其他回答

我想知道为什么没有人给出最简单的答案:

val array: Array<Int> = [1, 2, 3]

根据对我最初答案的一个评论,我意识到这只在注释参数中使用时才有效(这对我来说真的是出乎意料)。

看起来Kotlin不允许在注释之外创建数组文字。

例如,使用args4j库中的@Option查看以下代码:


    @Option(
        name = "-h",
        aliases = ["--help", "-?"],
        usage = "Show this help"
    )
    var help: Boolean = false

选项参数“aliases”的类型是Array<String>

你可以像这样创建一个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类

值得一提的是,当使用kotlin内置程序(例如intArrayOf(), longArrayOf(), arrayOf()等)时,对于给定的大小,您不能使用默认值(或所有值为所需值)初始化数组,相反,您需要通过根据类构造函数调用来进行初始化。

// Array of integers of a size of N
val arr = IntArray(N)

// Array of integers of a size of N initialized with a default value of 2
val arr = IntArray(N) { i -> 2 }

在Kotlin中有几种初始化数组的方法:

劳动力素质():

var myarray = arrayOf(1,2,3,4,5)

劳动力素质():

var myarray = arrayOf<Int>(1,2,3,4,5)

使用Array构造函数:

val num = Array(3, {i-> i*1})

内置的工厂方法:

val num1 = intArrayOf(1, 2, 3, 4)
//For Byte Datatype
val num2 = byteArrayOf()
//For Character Datatype
val num3 = charArrayOf()
//For short Datatype
val num4 = shortArrayOf()
//For long
val num5 = longArrayOf()

通过这种方式,可以在koltin中初始化int数组。

 val values: IntArray = intArrayOf(1, 2, 3, 4, 5,6,7)