2

我尝试简单地“扩展” Map 类失败了,因为 List 是一个接口,不能扩展但必须实现。

目标只是在一些现有类之上添加一些方法,例如:

List.add_unique(item) 如果项目尚不存在,我只想追加。这可以通过使用 List.indexOf(item) != -1 (其中未找到 -1)与 append !=null 逻辑来很好地完成。这将是一个很好且易于理解的示例?

但是,如何以最短、总体开销最小的方式完成此任务?我想我可以接受松散的打字——至少一开始是这样。

我还希望添加和/或修改其他方法,例如 Map 类的 .add() 方法。

我已经很多年没有处理接口了,我认为总体上可能有一种更简单的方法来开始我的项目的这一方面。

谢谢!

4

1 回答 1

2

我也遇到过这个问题。目前最好的解决方法是创建一个转发所有方法调用的类。像: https ://github.com/dart-lang/html5lib/blob/master/lib/src/list_proxy.dart

然后您可以从 ListProxy 继承并覆盖或添加您需要的任何方法。

如果人们觉得这足够有用,也许我们可以把它放在它自己的 pub 包中。不过,我希望我们可以修复 dart:core,因此它支持从所有核心集合类继承。

顺便说一句,如果您尝试覆盖 Map 中的方法,则要容易得多:您可以import 'dart:coreimpl';扩展HashMapImplementation.

于 2012-10-17T00:28:38.267 回答