【问题标题】:How to use Generics in Kotlin extension function如何在 Kotlin 扩展函数中使用泛型
【发布时间】:2020-08-18 09:45:29
【问题描述】:

我有两个功能基本相同,所以我想创建一个扩展功能。

问题是我需要提取每个类的数据才能得到正确的结果,我想创建一个Generic函数,并在这个函数内部决定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)
    }

}

【问题讨论】:

    标签: android kotlin generics kotlin-android-extensions


    【解决方案1】:

    错误消息几乎说明了一切。 T 不是表达式,因此不能在 when(...) 内部使用。 T 只是指Listitem 的类。

    你不是说使用类似的东西吗:

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

    ?

    【讨论】:

    • 其实这正是我的意思,我太追求T的东西了,我什至没有想到最简单的解决方案
    • 如果对您有帮助,请随时接受答案@Masksway
    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多