Dart 扩展了 Map 以便于延迟加载

2024-04-08

我正在尝试将数据从服务器延迟加载到地图中。
出于这个原因,我想向 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
}

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

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

我研究过这个答案:如何在 Dart 中扩展列表 https://stackoverflow.com/questions/16247045,但这是关于扩展列表,而不是映射。我寻找过 MapBase 但找不到。
我研究过这个答案:我想将我自己的方法添加到一些 Dart 类中 https://stackoverflow.com/questions/12925019,但这似乎是一个非常古老的答案,没有真正的解决方案。

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


你应该看看的另一个答案如何在 Dart 中扩展列表? https://stackoverflow.com/a/18508061/634863;)在这个答案中我指出委托列表 http://google.github.io/quiver-dart/docs/quiver.collection/DelegatingList.html。旁边有委托地图 http://google.github.io/quiver-dart/docs/quiver.collection/DelegatingMap.html.

您可以使用委托地图 http://google.github.io/quiver-dart/docs/quiver.collection/DelegatingMap.html作为超类或作为 mixin 来做你想做的事:

import 'package:quiver/collection.dart';

class LazyMap extends DelegatingMap {
  final delegate = {};

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

请注意,您将无法将此与xhr因为xhr是异步的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 扩展了 Map 以便于延迟加载 的相关文章

  • 如何在Python中动态创建类的类方法[重复]

    这个问题在这里已经有答案了 如果我将一个小 python 程序定义为 class a def func self return asdf Not sure what to resplace init with so that a func
  • Flutter TextField 在选择时更改图标颜色

    目标 改变颜色prefixIcon旁边的TextField当点击TextField TextField decoration InputDecoration prefixIcon Icon Icons lock outline hintTe
  • 使用StreamBuilder时,如何在用户离线时显示不同的Widget?

    我正在尝试从互联网上获取一些数据 随着使用FutureBuilder 处理各种情况 如离线 在线 错误很容易 但我正在使用StreamBuilder我无法理解如何处理离线案例 以下是我使用 StreamBuilder 的代码 它可以工作 但
  • 直接放置在 std::map 中

    为什么这段代码无法编译 std map
  • UML三元关联实现java代码[重复]

    这个问题在这里已经有答案了 三元关联是结构关系 指定一个事物的对象连接到其他两个事物的对象 我理解这种关系 但我不知道如何实现显示这三个类之间关联的方法 让我们考虑下面的例子 项目有许多使用特定编程的开发人员 语言促进发展 开发人员使用特定
  • 尝试在类中定义静态常量变量

    我正在定义一个变量adc cmd 9 as a static const unsigned char在我的课堂上ADC私人之下 由于它是一个常量 我想我只需在它自己的类中定义它 但这显然不起作用 pragma once class ADC
  • Python 中的类位于不同的文件中吗?

    与 Java 或 php 非常相似 我习惯将类与文件分开 Python 中也是同样的情况吗 另外 我应该如何命名该文件 像classname py一样小写还是像ClassName py一样 如果我想从此类创建一个对象 我是否需要做一些特殊的
  • 将 css 应用到区域地图

    我创建了一个非常大的地图 其中包含许多多边形区域 每个多边形区域超过 20 个坐标 用于地图内的区域 但是 您无法将 css 添加到 AREA 标记 因为我被告知它不是可见元素 我想要做的是 当用户将鼠标悬停在地图上的某个区域上时 我希望通
  • 如何在vim中将菜单键(“应用程序键”)映射到Escape键?

    我认为使用菜单键退出 vim 的插入模式将是一件很棒的事情 使用 Super 键也很好 但我不确定是否可能 因为 Super 键是一个修饰符 无论如何 我找不到任何与此相关的内容 寻求您的帮助并提前致谢 我认为没有任何方法可以配置 Vim
  • 向元素添加类

    像这样 我有两个选项卡 所以当我单击其中一个选项卡时 它是活动的 逻辑的 现在我试图区分活动选项卡和非活动选项卡 但不是使用 css 属性 但我想向单击的选项卡添加特定的类 如下所示 tab1 addClass active 但是 没有什么
  • 如何从另一个屏幕重置 Flutter 中的表单?

    如何重置 清除 flutter 应用程序中的表单字段 一旦数据提交到服务器 在我的应用程序中 我有 2 个页面 第一页输入表格详细信息 如姓名 地址等 第二页是上传图片 第一页将数据推送到第二页 这里我没有进行推送替换 意味着第二页位于第一
  • 颤动中的多个依赖下拉菜单

    我正在尝试在颤动上构建多个依赖的下拉菜单 第二个依赖于第一个 这是我实现的下拉列表的代码 Container child new DropdownButton
  • jQuery - 选择同一级别的div

    我想在单击按钮时选择一个特定的div 唯一的问题是 它必须是buttonClicked的父div的div 示例 div class container div class box h2 Langtidsparkering h2 div cl
  • 如何将类成员函数的返回类型设置为私有结构的对象

    很抱歉这个又长又令人困惑的标题 但我想不出更好的方法来问这个问题 所以 我有一堂课 template
  • 隐藏/显示切换具有相同类名的单独 div

    我有一个 UL 列表 每个 LI 都有一个隐藏的 DIV 以及一个显示隐藏 DIV 的 更多信息 链接 但是 单击此按钮也会显示所有其他 LI 的隐藏 DIV 我怎样才能只隐藏 显示 LI 中的 DIV 而不显示所有其他隐藏的 DIV 如果
  • 在 Java 8 中,如何使用 lambda 将 Map 转换为另一个 Map

    我刚刚开始研究 Java 8 并尝试 lambda 我想我应该尝试重写我最近写的一个非常简单的东西 我需要将字符串到列的映射转换为另一个字符串到列的映射 其中新映射中的列是第一个映射中的列的防御副本 列有一个复制构造函数 到目前为止我最接近
  • 2 个 Python 字典如何变成 1 个? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 扩展 字典 https stackoverflow com questions 577234 python extend for a dictionary 我知道 Python 列表可以
  • 如何在 Windows 上使用 Pyreverse

    我想使用pyreverse 创建图表类 我下载它 当我使用这个命令时 pyreverse bat c PyreverseCommand a1 s1 f ALL o png test py 我收到错误 名称 点 无法识别 什么是 点 如何创建
  • 将 Set> 转换为 HashMap

    在我的代码中的某一时刻 我创建了一个Set
  • Flutter中向TabView添加选项卡标签

    我正在尝试扩展作为答案提出的 TabViewhere https stackoverflow com questions 50036546 how to create a dynamic tabbarview render a new ta

随机推荐

  • 如何在 Nodejs 中实际运行 scalajs 代码?

    我正在开发一个后端聊天服务器 它目前是用混乱的回调 javascript 编写的 所以我正在考虑将其移植到 scalajs 我一直在浏览初学者指南 但我找不到如何将项目实际编译为可以使用节点运行的单个 JavaScript 文件 例如nod
  • pd.merge_asof() 基于时差不合并所有值 - Pandas

    我有两个数据框 一个包含新闻 另一个包含股票价格 两个数据框都有一个 日期 列 我想以 5 天的间隔合并它们 假设我的新闻数据帧是 df1 另一个价格数据帧是 df2 我的 df1 看起来像这样 News Dates News 2018 0
  • 将 tmux.conf 拆分为多个文件?

    我有一个在计算机之间共享的通用 tmux 设置文件 tmux conf common 我希望能够在我的 tmux conf 中获取此文件 在 bash 中实现此目的的一种方法是让每台计算机的 bashrc 获取公共文件 有没有办法在 tmu
  • unique_ptr自定义存储类型示例?

    霍华德 希南特 解释了 http home roadrunner com hinnant unique ptr03 html that unique ptr还可以使用自定义存储类型 他举了一个例子 共享内存 他只给出了粗略的想法 这对于快速
  • 使用 Eclipse 创建 java 可执行文件

    这完全是一个新手问题 我在 Ubuntu 上运行 Eclipse 我创建了一个测试项目 我想将其编译为可执行文件 Linux 相当于 Windows exe 文件 这是我的程序的内容 public class MyTest public s
  • 具有保序功能的哈希函数

    是否有任何带有uniq哈希码 如MD5 且保序的哈希函数 笔记 我不关心安全性 我需要它来排序 我有很多块 约1MB大小 我想对它们进行排序 当然我可以使用索引排序 但我想减少比较时间 理论上 如果我有 1 000 000 个 1MB 大小
  • Google 地图 7 从地理意图开始,将图钉放置在距离坐标最近的地址而不是确切位置

    在我的应用程序中 用户可以保存特定位置的纬度和经度 我希望他们能够通过以下方式在手机上启动其他应用程序地理意图 https datatracker ietf org doc html draft mayrhofer geo uri 00 s
  • AngularJS 多指令资源争用

    我正在尝试用角度构建指令 这里是plunker http plnkr co edit KbccCT p preview 我想把它分成 3 个指令 最高的祖父母指令 许多DAYS 中间 用 ng repeat 创建 一DAY 底部 使用 ng
  • 2013 年更新了 D 的 GUI 库?

    我正在用 D 开发一个游戏 到目前为止 我真的很欣赏 D 语言 并且对于大多数库都有很好的绑定 现在 对于编辑器 我正在寻找一个便携式 GUI 库 wxD 或 DWT 似乎是不错的选择 但它们似乎被放弃了 因为最新的更新是几年前的 论坛上也
  • 模板类成员函数的显式特化

    我有这个 template
  • 使用 ember-cli-mirage 测试错误响应

    我正在阅读 ember cli mirage 关于创建模拟响应的文档 但无法弄清楚如何测试完全相同的请求的错误响应 例如 test I can view the users function var users server createL
  • FirebaseUI Auth - Facebook 登录错误:来自 Facebook 的 debug_token 响应失败

    我正在尝试集成 FirebaseUI Auth 库 Google 登录和电子邮件登录工作正常 但我在设置 Facebook 登录时遇到问题 这是我的代码 user firebaseAuth getCurrentUser if user nu
  • 跟踪 vb.net 中函数调用的持续时间

    在我们的 VB6 应用程序中 我们添加了一些实用函数来跟踪函数所花费的时间 我们这样做是为了跟踪性能瓶颈 基本上 它的工作原理是有两个实用函数 StartTickCount 和 EndTickCount 您将在每个函数中传递函数名称 函数将
  • 如何让我的 PUT_LINE 语句显示在 TOAD 中?

    此代码可以编译 但在 TOAD 中不会显示 hi wo 输出 CREATE OR REPLACE PROCEDURE AdelTest IS tmpVar NUMBER BEGIN DBMS OUTPUT ENABLE 100 in INT
  • 单击链接后,javascript何时停止在页面上运行?

    我有一个运行各种 javascript 代码的页面 包括调用setTimeout 如果用户单击链接导航到另一个页面 该页面上的 javascript 在什么时候停止运行 因此我的 setTimeout 调用的代码将不再被调用 例如 单击链接
  • 我如何使用 Android EffectFactory 类?

    我厌倦了开发带有图像处理的示例应用程序 在我的应用程序中我需要添加一些color effects Grayscale sepia 在我的位图上 我参考了开发人员文档Doc 1 http developer android com refer
  • react-native\react.gradle' 不存在

    我使用 React Native 创建了一个应用程序 并且正在尝试生成 apk 完成文档中的所有操作后http facebook github io react native docs signed apk android html con
  • 雅罗斯拉夫斯基的双主元快速排序算法

    我正在研究我发现的双枢轴快速排序here http aofa2013 lsi upc edu slides Nebel pdf 幻灯片第 20 页 比较 雅罗斯拉夫斯基平均需求 1 9 n ln n 经典快速排序需要 2 n ln n 比较
  • 多个 jQuery-UI 滑块的合计

    我正在尝试实现一个有 4 个 jQuery UI 滑块的页面 并且我想让所有 4 个滑块的总数永远不会超过 400 我不介意以哪种方式实现这一点 它可以从 0 开始 一旦您更改 1 个滑块 剩余的可用总数就会减少 或者将滑块设置为超过最大值
  • Dart 扩展了 Map 以便于延迟加载

    我正在尝试将数据从服务器延迟加载到地图中 出于这个原因 我想向 Map 添加功能 以便当键不存在时 会进行调用以获取值 我尝试的是这样的 class LazyMap extends Map use length for now When t