"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()
这是代码。
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()