首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有泛型的Kotlin局部函数

具有泛型的Kotlin局部函数
EN

Stack Overflow用户
提问于 2021-08-08 14:01:10
回答 1查看 50关注 0票数 0

我只是在玩弄一些函数式编程技术,并试图实现一个列表的泛型drop函数。然而,类型似乎正在变得越来越少。我想知道为什么我不能重用声明的泛型类型。

IDE不希望我重用泛型类型

代码语言:javascript
复制
sealed class List<out A> {
  
    fun <A> drop(n: Int): List<A> {
        fun go(n: Int, l: List<A>): List<A> = when (n) {
                0 -> l
                else -> go(n - 1, l.tail())
        }
        return go(n, this)
    }
}

IDE将显示以下内容

代码语言:javascript
复制
Type mismatch.
Required:
List<A#1 (type parameter of chapter3.List.drop)>
Found:
List<A#2 (type parameter of chapter3.List)>

对于内部局部函数,这是不可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-11 03:52:05

您不需要在函数中再次重新定义A类型,它来自密封的类

代码语言:javascript
复制
sealed class List<out A> {


fun drop(n: Int): List<A> {
    fun go(n: Int, l: List<A>): List<A> = when (n) {
            0 -> l
            else -> go(n - 1, l.tail())
    }
    return go(n, this)
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68701496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档