如何扩展 Array 以获得泛型类型?

2024-05-22

我有一个链表类,声明如下:

 class LinkedNode<T> {

    let data: T
    var next: LinkedNode<T>?


    func traverseList(process: (LinkedNode<T>) -> ()) { ... }
}

我想要做的是扩展 Array 以拥有一个初始化程序,将我的链接节点类转换为链接节点数组。我试过这个:

extension Array where Element == LinkedNode<T> {

  init(node: LinkedNode<T>)
  {
      var result = [LinkedNode<T>]()
      traverseList { result.append($0) }
      return result
  }
}

但这会产生 T 未声明的错误。我尝试过把它拿出来并做其他事情,但没有任何效果。

我能够使用 LinkedNode 类上的方法获得相同的结果:

    func array() -> [LinkedNode<T>]
    {
        var result = [LinkedNode<T>]()
        traverseList { result.append($0) }
        return result
    }

但我更喜欢数组初始化程序,因为许多其他集合类型都有该初始化程序。


您可以在初始值设定项定义中声明通用参数。

extension Array {

    init<T>(node: LinkedNode<T>)
        where Element == LinkedNode<T>
    {
        var result = [LinkedNode<T>]()
        node.traverseList { result.append($0) }
        self = result
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何扩展 Array 以获得泛型类型? 的相关文章

随机推荐

  • NS_ERROR_XPC_BAD_CONVERT_JS

    在尝试将 appendChild 添加到刚刚创建的元素 在 for 循环中 后 我收到此错误 这个错误是什么意思 我想不可能附加某物 到 DOM 中并不真正存在的元素 我如何解决它 innerHTML 有效 但我认为这不是真正干净且正确的方
  • 如何将Excel中的每个条目转换为一行“矩阵”表

    我有类似的东西 1 2 3 a x o x b x x o c o o o 并想将其转换成像这样的线 1 a x 1 b x 1 c x 2 a o 2 b x 2 c o 3 a x 3 b o 3 c o 通过使用Excel文档中的公式
  • 使下划线 CSS 过渡改变方向

    我正在使用我找到的一些风格这个网站 http callmenick com post simple css3 transitions transforms animations compilation创建有效的下划线幻灯片 请参见jsfid
  • 使用Git记录文件复制操作

    当我使用 git mv 在 git 中移动文件时 状态显示该文件已被重命名 即使我更改了某些部分 它仍然被认为几乎是相同的东西 这很好 因为它让我可以跟踪它的历史记录 当我复制文件时 原始文件有一些历史记录 我想将其与新副本关联起来 我尝试
  • Node Sequelize - “按原样”插入日期而不转换为 UTC

    我正在尝试运行一个简单的查询 例如 Insert into table somedate values 2018 06 11 23 59 00 但 Sequelize 将其执行为 Insert into table somedate val
  • 发送&查询字符串

    从first jsp 我将一些参数发送到result jsp 如下所示 a href Show Items a 这里 item itemName 可以有类似的值 食品和文具 当项目名称包含 时 我无法在结果页面上获取整个值 仅打印它 foo
  • showOptionDialog 之后将焦点返回到 JTable 内的 JComboBox

    我遇到了问题JComboBox用作CellEditor for a JTable 我想要编辑后JComboBox并按tab显示一个OptionsDialog并且 如果选择了特定选项 则焦点仍将集中在JComboBox 问题是由于选项卡焦点移
  • 未捕获的类型错误:无法读取 null 的属性值[重复]

    这个问题在这里已经有答案了 我是 jQuery 新手 我正在尝试创建一个登录表单 当用户输入简短的用户名时 该表单会切换文本 这是我的代码 当我单击按钮时什么也没有发生 我检查了控制台 它在我的代码中的特定行上显示了标题上的错误 我也检查了
  • GDI 函数 BitBlt 和 StretchBlt 在 Win32 中是否硬件加速?

    我似乎无法通过搜索得到明确的答案 Win32 blitting 操作是否硬件加速 GDI 而不是 GDI 我不知道这些函数如何与图形驱动程序交互 是否有任何函数调用来验证此功能 例如 GetCaps 对于特定的图形设备 win32图形设备
  • 使用另一个 MEF 程序集中的类而不引用它

    我有 2 个 MEF 组件 设其为A成分和B成分 我需要的是能够从组件 A 中的组件 B 访问一个类 而不需要引用它 然后我想手动实例化该类的对象 目前我看到 MEF 允许使用 Import 自动实例化对象 它使用需要引用的接口 我可以使用
  • 电话 GAP 会话存储

    我使用手机 GAP 开发 iPhone 应用程序 在我的应用程序中 我们使用外部数据库 用户使用 Web 服务登录 登录后我需要存储用户 ID 我如何使用手机 GAP 存储用户 ID 我可以使用手机 GAP会话存储可以吗 哪位知道的请帮忙
  • 将 Scala Future 转变为 CompletableFuture

    我的项目中有一个 Akka 层 它返回Scala Future 而接收 Future 的部分是 Java 风格的 团队中的人不了解 Scala 他们宁愿使用CompletableFuture因为他们更了解 Java 8 API 有没有什么好
  • Matplotlib:如何在 y 轴上绘制分类数据?

    假设我有以下代码 它来自here https stackoverflow com questions 29508208 best way to plot categorical data answertab active tab top g
  • 以字符串数组作为参数的操作

    我想调用与此 uri 类似的操作 http server controller action columns firstname columns lastname columns age 并像这样使用它 public ActionResul
  • 确保 Clojure 中只有一个服务实例正在运行/启动/停止的规范方法?

    我正在用 Neo4j 支持的 Clojure 编写一个有状态服务器 它可以服务套接字请求 例如 HTTP 当然 这意味着我需要能够从该服务器内启动和停止套接字服务器 在设计方面 我希望能够在此服务器中声明一个 服务 并启动和停止它 我在 C
  • 如果警告数量超过一定限制,AzureDevOps 构建管道将失败

    我热衷于不让项目质量失控 我知道在某些情况下警告可能有意义 但我担心警告的数量会随着时间的推移而增加 我有一个 Azure DevOps 构建 门控提交 管道 我只想允许 10 个警告 以便在某些时候开发人员必须解决他们的警告 有没有办法对
  • 不理解 Ruby ljust/rjust/center 方法

    我正在学习嵌套 我的任务是使每条新行都以缩进开头 这是我的代码 但它不起作用 nestingDepth 0 def logger description block puts Beginning description rjust nest
  • getAudioInputStream() 期间标记/重置异常

    我发布了问题的修复 如下所述 但无法确认它是否解决了问题 使用 Java 7 的人会尝试以下 Applet 并报告吗 我们将非常感激 音频混合器演示 http www hexara com VSL AudioMixerDemoWarOfWo
  • Play 商店错误:无法安装应用重试,仍然无法正常工作,请参阅解决问题的常见方法

    我昨天在 Play 商店发布了一个新应用程序 并且已发布 但是 当我尝试下载并安装时 它显示此错误 无法安装应用程序 X 重试 但它仍然不起作用 请参阅解决问题的常见方法 我已经尝试过多次清除Play商店缓存 数据 重置手机 尝试了我的小米
  • 如何扩展 Array 以获得泛型类型?

    我有一个链表类 声明如下 class LinkedNode