假设我有一些数据类型,并且我想要一个仅返回
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();
}
只是做了更多的挖掘,我实际上发现了这篇文章,它让我深入了解了我正在寻找的答案!
extension MyClassOperations<MyClassT extends MyClass> on MyClassT {
MyClassT gimmeThis() => this;
}
什么?!扩展泛型类型?!! Dart 是一门很酷的语言,我不断学习使用它的新方法,这使得用它编程变得非常有趣!