`extension`如何引用dart中`this`的类型?

问题描述 投票:0回答:1

假设我有一些数据类型,并且我想要一个仅返回

gimmeThis()
的函数
this
。目前,
main()
中的代码无法编译,因为
gimmeThis()
的结果是
MyClass
。当调用
gimmeThis()
时,如何更改扩展类以返回更具体的类型?

class MyClass {}
class MySubclass1 extends MyClass {}
class MySubclass2 extends MyClass {}

extension MyClassOperations on MyClass {
  // how to replace `MyClass` with the actual type of `this`?
  MyClass gimmeThis() => this;
}

void main() {
  MySubclass1 sub1 = MySubclass1().gimmeThis();
  MySubclass2 sub2 = MySubclass2().gimmeThis();
}
dart types this self-reference
1个回答
0
投票

只是做了更多的挖掘,我实际上发现了这篇文章,它让我深入了解了我正在寻找的答案!

extension MyClassOperations<MyClassT extends MyClass> on MyClassT {
  MyClassT gimmeThis() => this;
}

什么?!扩展泛型类型?!! Dart 是一门很酷的语言,我不断学习使用它的新方法,这使得用它编程变得非常有趣!

© www.soinside.com 2019 - 2024. All rights reserved.