我尝试简单地“扩展”Map 类失败了,因为 List 是一个接口(interface),无法扩展但必须实现。
目标只是在现有类的基础上添加一些方法,例如:
List.add_unique(item) 我只想在该项目尚不存在时追加。这可以通过使用 List.indexOf(item) != -1(其中 -1 未找到)对append !=null 逻辑进行与运算来很好地完成。这是一个很好且易于理解的示例吗?
但是,如何以最短、总体开销最小的方式实现这一点呢?我想我可以接受松散的打字——至少在一开始是这样。
我还想添加和/或修改其他方法,例如 Map 类的 .add() 方法。
我已经很多年没有处理过界面了,我认为总体上可能有一种更简单的方法来开始我的项目的这一方面。
谢谢!
最佳答案
我也遇到这个问题了。目前最好的解决方法是创建一个转发所有方法调用的类。就像是: https://github.com/dart-lang/html5lib/blob/master/lib/src/list_proxy.dart
然后您可以继承ListProxy并重写或添加您需要的任何方法。
如果人们发现这个足够有用,也许我们可以将它放在自己的 pub 包中。不过,我希望我们能够修复 dart:core,这样它就支持从所有核心集合类继承。
顺便说一句,如果您尝试重写 Map 中的方法,那就容易得多:您可以 import 'dart:coreimpl';
并扩展 HashMapImplementation
。
关于class - 我想将我自己的方法添加到一些 Dart 类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925019/