Kotlin поведение оператора распространения на массиве символов - PullRequest
0 голосов
/ 25 марта 2020

Я уже некоторое время использую Kotlin, но я только что узнал, что когда я хотел бы использовать оператор распространения для массива символов и передать его в функцию split, он не работает.

fun main() {
    val strings = arrayOf("one", "two")

    val stringSplit = "".split("one", "two")
    val stringsSplit = "".split(*strings)

    val chars = arrayOf('1', '2')

    val charSplit = "".split('1', '2')
    val charsSplit = "".split(*chars) // this is not possible
}

выдает следующую ошибку (то же самое во время сборки и то же в официальной попытке kotlin repl) produced error

Я что-то не так делаю?

1 Ответ

2 голосов
/ 25 марта 2020

Это происходит потому, что в Kotlin Array<Char> равно Character[] в Java, а не char[] в Java.

Чтобы использовать оператор распространения для массива символов и передать его параметру vararg Char, необходимо использовать CharArray, равное char[] в Java.

fun main() {
    val strings = arrayOf("one", "two")

    val stringSplit = "".split("one", "two")
    val stringsSplit = "".split(*strings)

    val chars = charArrayOf('1', '2')

    val charSplit = "".split('1', '2')
    val charsSplit = "".split(*chars) // this is not possible
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...