如何在 Dart 中扩展列表?

2023-12-10

我想在 dart 中创建一个更专业的列表。我无法直接扩展List。我有什么选择?


制作一个类实现List有几种方法:

  • 延伸ListBase并实施length, operator[], operator[]= and length= :
import 'dart:collection';

class MyCustomList<E> extends ListBase<E> {
  final List<E> l = [];
  MyCustomList();

  void set length(int newLength) { l.length = newLength; }
  int get length => l.length;
  E operator [](int index) => l[index];
  void operator []=(int index, E value) { l[index] = value; }

  // your custom methods
}
  • Mixin 列表混合并实施length, operator[], operator[]= and length= :
import 'dart:collection';

class MyCustomList<E> extends Base with ListMixin<E> {
  final List<E> l = [];
  MyCustomList();

  void set length(int newLength) { l.length = newLength; }
  int get length => l.length;
  E operator [](int index) => l[index];
  void operator []=(int index, E value) { l[index] = value; }

  // your custom methods
}
  • 委托给他人List with DelegatingList来自箭袋包:
import 'package:quiver/collection.dart';

class MyCustomList<E> extends DelegatingList<E> {
  final List<E> _l = [];

  List<E> get delegate => _l;

  // your custom methods
}
  • 委托给他人List with DelegatingList来自收藏包:
import 'package:collection/wrappers.dart';

class MyCustomList<E> extends DelegatingList<E> {
  final List<E> _l;

  MyCustomList() : this._(<E>[]);
  MyCustomList._(l) :
    _l = l,
    super(l);

  // your custom methods
}

根据您的代码,每个选项都有其优点。如果您包装/委托现有列表,您应该使用最后一个选项。否则,根据您的类型层次结构使用前两个选项之一(混合允许扩展另一个对象)。

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

如何在 Dart 中扩展列表? 的相关文章

随机推荐

  • 从字符串中提取所有数字

    假设我有一个字符串 例如123ad456 我想创建一种将数字组分成一个列表的方法 这样输出将类似于123 456 我试过做return Regex Match str d Value 但只输出第一次出现的数字 因此输出将是123 我也知道我
  • POI Excel:获取样式名称

    我想读取应用于 xlsx 文档中单元格的样式的名称 我已经提取了该文件 在 xl styles xml 中我可以找到样式名称
  • 实体框架多对多关系

    好吧 我正在尝试弄清楚如何正确设置我的数据库 我有两节课 public class Event public int EventId get set public string EventName get set and public cl
  • Java 原始类型和泛型交互

    如果我有一个 Stack 类 class Stack
  • 如何使用另一个类中的 Tcpclient 将数据发送到所有已连接的套接字连接

    Closed 这个问题需要细节或清晰度 目前不接受答案 public void send string msg a2 Encoding ASCII GetBytes msg networkStream clientSocket GetStr
  • R 将特定行和列乘以常数

    我有以下数据 type lt c 1 4 year1 lt c 1 4 year2 lt c 1 4 year3 lt c 1 4 data lt data frame type year1 year2 year3 我想将年份列中的底部两行
  • 的 Html 帮助器

    有没有HTMLHelper用于文件上传 具体来说 我正在寻找替代品
  • 如何通过 R 在 Outlook 正文中显示 Excel 工作表

    我可以通过 RDCOMClient 包将 Excel 文件附加到 Outlook 中 但是如何通过R在邮件正文中显示excel工作表内容 假设工作表中包含一个表格和一个图形 library RDCOMClient init com api
  • 为什么像 3.14 这样的浮点值在 MSVC 中默认被视为 double ?

    为什么我需要输入 3 14f 而不是 3 14 来禁用所有这些警告 这有一个连贯的理由吗 这就是 C 和 C 标准所决定的 浮点文字的类型为 double 如果您需要它们是浮点型 则可以在它们后面加上后缀f 似乎没有任何具体说明原因 但我猜
  • Silverlight 是否缓存 Web 服务调用?

    这是问题所在 我的 Silverlight 应用程序正在使用 WebClient 调用名为 getCampaigns 的 HTTP Web 服务 该服务返回 Campaign 对象的 JSON 数据数组 然后 用户可以与请求的对象进行交互
  • 如何解决“您的应用似乎未启用适用于 Android 的 Places API”

    这个错误已经困扰我一天多了 我已经彻底搜索过 但没有一个答案为我提供解决方案 我已经正确设置了 API 密钥 并提供了应用程序限制 提供了包名称和 SHA1 密钥 这是代码 清单文件
  • 如何使用一个或多个 StructType 创建架构 (StructType)?

    我正在尝试创建一个StructType在另一个里面StructType 但它只允许添加一个StructField 我找不到任何添加方法StructType to it 如何创建StructType下面的字符串表示的模式 struct
  • 如何使用 Cargo maven 插件远程部署 WAR 到 JBoss 5.1.0.GA?

    我正在尝试使用 Cargo maven 插件将 WAR 文件远程部署到 JBoss 5 0 1 GA 但似乎不能 我发现了类似的线程 但它们最终都没有帮助我解决我的问题 我遵循这些指示 一些看起来很重要的点是 从 CARGO 1 0 3 开
  • 如何使用powershell按年龄对数据进行排序

    尝试在 powershell 中按年龄对 txt 文件进行排序 数据如下所示 史密斯 约翰 65沃克 卢克 25马诺 吉尔 88 岁 试图让它看起来像这样 马诺 吉尔 88史密斯 约翰 65沃克 卢克 25 我尝试过 Format Tabl
  • 更改 Plotly 动画中的“框架”标签

    TLDR 我想用三个字母缩写而不是每个月的数字来标记框架滑块 我创建了一个条形图 显示 40 年来每个月的平均积雪深度 我从 NOAA 提取数据 然后使用 lubridate 按年份和月份进行分组 这是代码 snow depth lt go
  • 如何在 Azure VM 上同时运行 2 个 VM 自定义脚本扩展

    我已使用 ARM 模板创建了一个 Azure VM 并希望在部署 VM 后在同一 VM 上运行 2 个 VM 脚本扩展 使用ARM模板如何实现 apiVersion variables resourceDeploymentApiVersio
  • Msys2:维护两个 python 安装

    我在 Win 10 下使用 Msys2 便携式 我有 2 个 python 3 8 安装 最初的问题是问是否如此 我现在确定了 所以暂时我想处理他们的维护工作 我还发布了另一个相关问题Msys2 两个 python 安装中的 readlin
  • Firebase - 阻止用户身份验证

    如果在以下位置找不到用户的电子邮件 我需要阻止用户身份验证allowedUsers 它并不真正影响应用程序 因为所有操作都将在users列表 但如果没有进行身份验证 那就太好了 loginWithGoogle const userDetai
  • SQL 电子邮件验证(无正则表达式)

    好的 有一百万个正则表达式用于验证电子邮件地址 但是一些可以集成到 Sql Server 2005 的 TSQL 查询中的基本电子邮件验证怎么样 我不想使用 CLR 过程或函数 只是直接的 TSQL 有人已经解决这个问题了吗 Very基本是
  • 如何在 Dart 中扩展列表?

    我想在 dart 中创建一个更专业的列表 我无法直接扩展List 我有什么选择 制作一个类实现List有几种方法 延伸ListBase并实施length operator operator and length import dart co