如何在kotlin中定义全局的arralist

Pri*_*ish 0 android kotlin

对于android中的java类,我们习惯在Activity之类声明一个int数组,int[] intarray; 并使用intArray = new Int(size)创建所需的对象.

我知道在kotlin中使用数组我需要做类似的事情

val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
Run Code Online (Sandbox Code Playgroud)

我无法做的只是全局声明对象,即

val numbers: IntArray
Run Code Online (Sandbox Code Playgroud)

在kotlin中,我们声明变量,val a: Int = 1但是如基本语法教程所示,它不允许我只声明变量val c: Int,然后在需要时初始化它.它给了我错误

财产必须初始化或抽象

声明部分我错了.因为它不允许我只定义val numbers: IntArray.谁能告诉我哪里出错了?

zsm*_*b13 6

A val是只读值,因此必须立即初始化,因为它只应设置一次.如果在Activity创建数组时无法立即初始化数组,则应将其设为a var.

这仍然需要初始化:例如,您可以使用空数组初始化它作为默认值.

var numbers: IntArray = intArrayOf()
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用lateinit关键字对其进行标记,以表明您尚未分配任何内容,但是您知道它将在您第一次使用之前进行初始化,并且您负责:

lateinit var numbers: IntArray
Run Code Online (Sandbox Code Playgroud)

最后,你可以使它成为可以为空的IntArray,并用它初始化它null.在这里,编译器将保存您不会访问它null,但每次访问它时,您将被迫处理它可能的事实null.

var numbers: IntArray? = null
Run Code Online (Sandbox Code Playgroud)