我有这个代码
var str : CharArray
var t =0
for (k in i..i+3) {
str[t++] = array[k][j]
它说str必须被初始化,我不知道如何初始化。
我试图这样初始化,但是它说类型不匹配,
var array: Array<CharArray> = arrayOf("India");
类型推断失败。预期的类型不匹配: 需要: 数组 发现: 数组
答案 0 :(得分:1)
您可以通过以下方式初始化它:
var str : CharArray = CharArray(3) //if you know size
var str : CharArray = charArrayOf() //creates empty array
var str : CharArray? = null //makes your array nullable
或者您可以使用lateinit
稍后进行初始化
答案 1 :(得分:0)
如果将CharArray声明为它,则必须立即对其进行初始化。否则,您可以指定稍后使用属性lateinit对其进行初始化,或者可以将变量声明为CharArray并将其设置为null,或者可以使用
var str : CharArray? = null
var lateinit str: CharArray
答案 2 :(得分:0)
您已声明类型为CharArray
的变量,但尚未为其分配任何实例。
在设置该CharArray
的元素之前,必须创建CharArray
的实例。看来您已经知道该数组的大小,然后可以使用以下数组构造函数:
// creates an instance of CharArray of 4 elements, filled with \u0000 chars
val str = CharArray(4)
// after that you can set elements in the array
要点:如果您有一个函数可以提供给定索引的数组元素值,则可以使用类似的构造函数来立即创建实例并初始化其元素:
val str = CharArray(4) { index ->
array[i + index][j]
}
答案 3 :(得分:0)
在 Kotlin 中有很多方法可以初始化数组。如果所有值都相同(这里我使用空格),最简单的方法是:
var chars = CharArray(26) { ' ' }
如果您有一组特定的字符(这里我将其设为常量),我发现这是一种简单的方法:
val CHARS = "abcdefghijklmnopqrstuvwxyz".toCharArray()
如果你想将一个复制到另一个(克隆),你可以这样做:
val array2 = CharArray(array.size) { i -> array[i] }
在你上面给出的例子中,你试图初始化一个 CharArray 数组。不确定这是否是您真正想要的,但您可以这样做(我有一个包含 25 个项目的数组,每个项目都是一个包含 5 个空格的数组):
var array2D = Array<CharArray>(25) { CharArray(5) { ' ' } }
答案 4 :(得分:0)
它说 str 必须被初始化。问题是您没有完全定义要创建的 char 数组的结构。 CharArray 需要知道您正在创建的数组的实际长度或大小。因此,在本说明中,您需要在尝试填充之前对其进行初始化。我的代码片段已关闭 .....您的代码仍有一些问题。
xgb_predict(train, test[0, :-1])
output::: 1 到 30 之间的值将存储在 str 字符数组中