首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >馆藏规模扩展功能

馆藏规模扩展功能
EN

Stack Overflow用户
提问于 2021-02-09 22:01:59
回答 1查看 48关注 0票数 0

我正在尝试实现一个扩展函数,如果集合的大小大于某个值,它会运行一些代码块,但是我在Collection<*>部件中得到了这个错误:

如果

类型参数被另一种类型参数所限制,它就不能有任何其他边界。

守则:

代码语言:javascript
复制
fun <C, R> C.ifBiggerThan(size: Int, execute: () -> R): R where C : Collection<*>, C : R  =
        if (this.size > size) { execute() } else { this }

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 14:33:30

if分支中返回R,在else分支中返回C。结果表达式的类型是ifelse分支的最特定的超级类型。在这种情况下,它将是R,因为C : R。因此,引入C类型作为R的扩展是没有意义的。结果表达式的类型仍然是R。所以,您可以将其替换为Collection<T>

代码语言:javascript
复制
fun <T> Collection<T>.ifBiggerThan(size: Int, execute: () -> Collection<T>): Collection<T> =
    if (this.size > size) { execute() } else { this }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66127868

复制
相关文章

相似问题

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