我尝试简单地“扩展”Map类失败,因为List是一个接口,无法扩展但必须实现。
目标只是在一些现有类之上添加一些方法,例如:
List.add_unique(item)我只想在项目尚不存在的情况下追加。这可以通过使用List.indexOf(item)来追加!= null逻辑来很好地完成!= -1(其中-1是notFound)。这将是一个很好且易于理解的例子吗?
但是,如何以最短,最不总体的开销方式实现这一目标?我认为我可以放松打字 - 至少从开始。
我希望为Map类添加或修改其他方法,例如.add()方法。
我已经多年没有处理过界面了,而且我认为在我的项目的这一方面可能会有更简单的方法来开始。
谢谢!
答案 0 :(得分:2)
我也遇到了这个问题。目前最好的解决方法是创建一个转发所有方法调用的类。就像是: https://github.com/dart-lang/html5lib/blob/master/lib/src/list_proxy.dart
然后你可以从ListProxy继承并覆盖或添加你需要的任何方法。
如果人们觉得这很有用,也许我们可以将它放在自己的pub包中。我希望我们可以得到dart:虽然核心是固定的,所以它支持所有核心集合类的继承。
顺便说一下,如果您尝试覆盖Map中的方法,则更容易:您可以import 'dart:coreimpl';
并扩展HashMapImplementation
。