Я делаю свои первые шаги в Kotlin и пытаюсь написать простую функцию разделения строк. Я начал с этого:
fun splitCSV(s : String) : Array<String> {
return s.split(",");
}
Который, я думаю, можно записать так:
fun splitCSV(s : String) : Array<String> = s.split(",");
Но я получаю ошибку типа, поскольку s.split возвращает Array<String?>?
, а не Array<String>
. Я не смог найти простой способ сделать приведение, поэтому я написал эту функцию для преобразования:
fun forceNotNull<T>(a : Array<T?>?) : Array<T> {
return Array<T>(a!!.size, { i -> a!![i]!! });
}
fun splitCSV(s : String) : Array<String> = forceNotNull(s.split(","));
Однако теперь я получаю сообщение об ошибке во время выполнения:
ClassCastException: [Ljava.lang.Object; нельзя привести к [Ljava.lang.String
Если я поменяю T в forceNotNull
на String, то это сработает, поэтому я думаю, что я близок к решению.
Это правильный путь? И если это так, как я могу исправить forceNotNull
для работы в общем случае?