gpt4 book ai didi

generics - 这种通用类型

转载 作者:行者123 更新时间:2023-12-03 02:51:15 25 4
gpt4 key购买 nike

我们有一些类层次结构,需要在基类方法中实现,返回类型为this.runtimeType。在Java中,是通过使用通用参数class Base extends <This extends Base<This>>完成的。在Dart中,它也可以正常工作:

class A<This extends A<This>> {
This copy() => //...
}
class B extends A<B> {}

A a = new A(); // ok
A ab = new B(); // ok
B b = new B(); // ok

但是,尽管没有不抽象的父类:
A a2 = new A().copy(); // Unsound implicit cast from A<dynamic> to A<A<dynamic>>

当然,我们不能在此处明确为A指定通用参数-它是递归的。这是一种错误,还是在Dart中有另一种方法?

最佳答案

  • https://github.com/dart-lang/sdk/issues/27336(最近在DDC中修复)
  • https://github.com/dart-lang/sdk/issues/27526
    是相关的问题。

  • 我认为这只是强模式下缺少的功能。

    我只得到错误
    analyzer:
    strong-mode:
    implicit-casts: false

    这是不久前添加的。

    即使启用了 Strong mode,在 DartPad中也没有错误。

    关于generics - 这种通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017348/

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