class - Dart 扩展 Map 以方便延迟加载

标签 class map dart extends

我正在尝试将数据从服务器延迟加载到 map 中。
出于这个原因,我想向 Map 添加功能,以便 当键不存在时,完成调用以获取值

我试过的是这样的:

class LazyMap extends Map {
  // use .length for now. When this works, go use xhr
  operator [](key) => LazyMap.putIfAbsent(key, () => key.length);
}

LazyMap test = new LazyMap();

main() {
  print(test.containsKey('hallo')); // false

  // I prefer to use this terse syntax and not have to use putIfAbsent
  // every time I need something from my map
  print(test['hello']); // 5

  print(test.containsKey('hallo')); // true
}

这会引发一个错误,指出“无法解析隐式 super 调用的构造函数映射”,这对我来说很神秘。

这是我第一次尝试扩展任何东西,所以我可能会做一些愚蠢的事情。
任何关于做得更好的建议,或者可能告诉我我使用了不好的做法,我们将不胜感激。

我已经研究过这个答案: How do I extend a List in Dart ,但这是关于扩展列表,而不是 map 。我一直在寻找 MapBase,但找不到。
我已经研究了这个答案: I want to add my own methods to a few Dart Classes ,但这似乎是一个非常古老的答案,没有真正的解决方案。

亲切的问候,
亨德里克·扬

最佳答案

看看这个 post ,你不能扩展 Map 及其子类。我认为获得你想要的东西的最好方法是实现它。

class LazyMap implements Map {
  Map _inner = {};

  operator [](key) => _inner.putIfAbsent(key, () => key.length);

  // forward all method to _inner
}

关于class - Dart 扩展 Map 以方便延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081210/

相关文章:

javascript - prototype.js 中的复制构造函数

javascript - 如果我在原型(prototype)上定义方法,如何在构造函数中调用它们?

javascript - 在不首先创建实例的情况下引用方法/使用 jQuery 或任何 javascript 映射函数映射方法

javascript - 使用 array map 通过 if 条件过滤结果

flutter - 如何通过 Firebase ML 套件文本识别扫描七段显示器?

python - 在python中将类返回给自身

python - 如何在Python中创建一个类来下载文件

vector - 循环向量

flutter - 优化带有 400 多个小框的可缩放网格

flutter - 拜托,如何将蓝色容器嵌入代码中