#android #kotlin #generics #kotlin-android-extensions
#Android #kotlin #дженерики #kotlin-android-расширения
Вопрос:
У меня было 2 функции, которые выполняют в основном одно и то же, поэтому я подумал создать функцию расширения.
Проблема в том, что мне нужно извлечь данные каждого класса, чтобы получить правильный результат, я подумал о создании универсальной функции, и внутри этой функции решить, к какому члену класса обращаться внутри when
инструкции.
Но когда я пытаюсь вызвать T
внутри инструкции when, я получаю Type parameter 'T' is not an expression
Что я делаю не так?
Моя функция:
fun <T: Any> List<T>.extractWithSepreation(errorString: String): String {
var errorString = "There is no available $errorString"
if (this.isEmpty()) {
return errorString
}
errorString = ""
this.forEachIndexed { index, item ->
when(T)
}
}
Ответ №1:
Сообщение об ошибке в значительной степени говорит само за себя. T
не является выражением, поэтому его нельзя использовать внутри when(...)
. T
просто ссылается на класс item
List
.
Разве вы не имели в виду использование чего-то вроде:
when(item) {
is ClassA -> doSomething()
is ClassB -> doSomethingElse()
}
?
Комментарии:
1. На самом деле это именно то, что я имел в виду, я был настолько увлечен этим, что даже не подумал о простейшем решении
2. Не стесняйтесь принять ответ, если он вам помог @Masksway