如何定义kotlin全球范围内的arralist

对于Android中的java类,我们用来在Activity的顶部声明一个int数组,像int[] intarray; 并用intArray = new Int(size)创建对象。

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

 val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50) 

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

 val numbers: IntArray 

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

属性必须被初始化或抽象

我在声明部分出错了。 因为它不让我只定义val numbers: IntArray 。 有人可以告诉我哪里出错吗?

你不能定义一个未初始化的常量变量。 更改以下行:

 val numbers: IntArray 

由这一个:

 var numbers: IntArray? = null 

那么,你可以修改数字变量值…

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

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

 var numbers: IntArray = intArrayOf() 

或者,您可以使用lateinit关键字来标记它,以表明您还没有任何东西可以分配给它,但是您知道在第一次使用它之前它将被初始化,并且为此承担责任:

 lateinit var numbers: IntArray 

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

 var numbers: IntArray? = null 

val是不可变的数据变量(只读)。 而是使用var 。 阅读定义局部变量的更多信息

所以你需要的是:

 var numbers: IntArray? = null // This says numbers variable is nullable 

你可以随时初始化它。