"No set method providing array access" -- 为什么在 Kotlin 中会发生这种情况?

"No set method providing array access" -- why does this happen in Kotlin?

这是代码。

val stack = Array(inputString.length + 1) { "" }
var current = 0
for ((i, char) in inputString.withIndex()) {
    if (char == '(') {
        current += 1
        continue
    } else if (char == ')') {
        val enclosedString = stack[current]
        stack[current - 1] = stack[current - 1] + enclosedString.reversed()
        current -= 1
        continue
    } else {
        stack[current] +=  char //here's the compile time error 
    }
}

我收到一条错误消息 "No set method providing array access"。我不明白这个。

如果我把它改成:

stack[current] = stack[current] + char

一切正常。

为什么会这样?

错误的原因是Char变量赋值给Array<String>不正确,需要先将Char转换为String,就是这样语句

中发生了什么
stack[current] = stack[current] + char

+ 函数 returns 一个新的 String 与右侧的字符串表示形式连接(即它会自动调用右侧操作数中的 toString )。换句话说,它在连接之前将 Char 变量 char 转换为 String

也可以自己转换。

stack[current] += char.toString()