我有2个功能基本上可以完成相同的工作,因此我想创建一个扩展功能。
问题是我需要提取每个类的数据以获得正确的结果,我想到了创建一个泛型函数,并在该函数中决定在when语句中访问哪个类成员。
但是当我尝试在when语句中调用T时,我得到了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)
    }

}

最佳答案

错误消息几乎说明了一切。 T不是表达式,因此不能在when(...)内部使用。 T仅指itemList的类。
您不是说要使用类似的方法:

when(item) {
   is ClassA -> doSomething()
   is ClassB -> doSomethingElse()
}

08-18 17:40