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

标签 class extend dart implements

我尝试简单地“扩展”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/

相关文章:

java - 使用 makefile 无法找到或加载主类

Android 扩展 View ,特别是 RadioButton

dart - 如何访问Dart中的embed元素的contentDocument?

javascript - 通过传递带有路径和值的字符串来扩展 JavaScript 对象

javascript - 如何向可以访问其变量的javascript对象添加函数

dart - 你如何在 Dart 中对异常进行单元测试?

flutter - 如何知道小部件在视口(viewport)中是否可见?

PHP error_log 性能问题

python - 我怎样才能使这个构造更简单,就像Python中的类或函数一样?

python - 从构造函数获取变量