«Нет установленного метода, обеспечивающего доступ к массиву» - почему это происходит в Kotlin? - PullRequest
0 голосов
/ 20 января 2019

Вот код.

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 
    }
}

Я получаю сообщение об ошибке «Нет заданного метода, обеспечивающего доступ к массиву».Я не понимаю этого.

Если я изменю его на:

stack[current] = stack[current] + char

, все будет работать нормально.

Почему это происходит?

1 Ответ

0 голосов
/ 20 января 2019

Причиной ошибки является неправильное присвоение переменной Char переменной Array<String>, вам необходимо преобразовать Char в String раньше, и это то, что происходит в операторе

stack[current] = stack[current] + char

Функция + возвращает новый String, объединяющийся со строковым представлением правой стороны (то есть автоматически вызывает toString в правом операнде).Другими словами, он преобразует переменную Char char в String до объединения.

Вы также можете преобразовать ее самостоятельно.

stack[current] += char.toString()
...