我想将自己的方法添加到一些Dart类中

时间:2012-10-16 23:32:11

标签: class extend dart implements

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

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

List.add_unique(item)我只想在项目尚不存在的情况下追加。这可以通过使用List.indexOf(item)来追加!= null逻辑来很好地完成!= -1(其中-1是notFound)。这将是一个很好且易于理解的例子吗?

但是,如何以最短,最不总体的开销方式实现这一目标?我认为我可以放松打字 - 至少从开始。

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

我已经多年没有处理过界面了,而且我认为在我的项目的这一方面可能会有更简单的方法来开始。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

如果人们觉得这很有用,也许我们可以将它放在自己的pub包中。我希望我们可以得到dart:虽然核心是固定的,所以它支持所有核心集合类的继承。

顺便说一下,如果您尝试覆盖Map中的方法,则更容易:您可以import 'dart:coreimpl';并扩展HashMapImplementation