gpt4 book ai didi

kotlin - 嵌套在通用父类中的类构造函数的功能引用

转载 作者:行者123 更新时间:2023-12-02 13:32:35 24 4
gpt4 key购买 nike

如果我有

sealed class Foo<A> {
data class Bar<A>(val value: Int): Foo<A>()
}

并且我想使用 Bar<Int>运算符将 ::构造函数作为隐式lambda引用,那么以下任何一种都不被接受为有效语法:
  • Foo<Int>::Bar<Int>
  • ::Foo.Bar<Int>
  • ::(Foo.Bar<Int>)(编译器告诉我此语法保留供将来使用)。

  • 如果我使用以下方式将嵌套类构造函数显式导入到范围中,则可以引用它
    import com.package.Foo.Bar

    这使我可以为构造函数编写 ::Bar,为属性getter编写 Bar<Int>::value。但是我必须对每个嵌套的构造函数都执行此操作,这有点抵消了使用 ::运算符保存类型的优势。

    是否有一种我错过的记号,可以避免导入所有嵌套的类名和构造函数?

    编辑

    我最初的示例不涉及泛型,事实证明我在使用的实际代码中过分简化了我使用的实际代码。

    事实证明,对于没有泛型参数的嵌套类, Foo::Bar表示法实际上有效,因此我最初的问题有一个错误的前提。但是,无法在泛型类中创建对构造函数的可调用引用。以下错误报告中对此进行了记录: https://youtrack.jetbrains.com/issue/KT-15952

    最佳答案

    导入通配符怎么办?

    import com.package.Foo.*

    关于kotlin - 嵌套在通用父类中的类构造函数的功能引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60520383/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com