如何定义 CollectionType 的扩展,以便其方法可用于字典?

2024-03-22

我最近能够更改扩展名:

extension Array where Element: Encodable { ... }

to:

extension CollectionType where Generator.Element: Encodable { ... }

为了以后能够应用类型约束CollectionType and Encodable在不同的扩展中。

现在我正在尝试做同样的事情Dictionary,改变:

extension Dictionary where Key: StringLiteralConvertible, Value: Encodable { ... }

to:

extension CollectionType where Generator.Element == (Key: StringLiteralConvertible, Value: Encodable) { ... }

然而,后者似乎不能有效替代Dictionary类型,因为现在无法在字典上调用扩展中定义的方法。

我如何定义一个扩展CollectionType(或者可能SequenceType)以便它的方法可用于字典?


Update

我想指出的是,我尝试添加类型约束如下,但没有成功:

extension CollectionType where Self: protocol<Indexable, SequenceType, DictionaryLiteralConvertible>, Self.Key: protocol<Hashable, StringLiteralConvertible>, Self.Value: Encodable, Self.Generator.Element == (Key: StringLiteralConvertible, Value: Encodable) { ... }

Update 2

由于 user2194039 询问 – 我不想这样做并保留扩展名Array and Dictionary.

但是,我还需要为Optional变体。我的理解是,由于他们使用泛型,不可能为Optional这限制了它Array or Dictionary.


这适用于我当前的用例:

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

如何定义 CollectionType 的扩展,以便其方法可用于字典? 的相关文章

  • UITableView 快速获取 titleForHeadersInSection

    我想在 UITableView 的部分中设置标题的标题 语法是什么swift设置该部分中标题的标题 func tableView tableView UITableView titleForHeaderInSection section I
  • 将自定义图像设置为 UIBarButtonItem 但它不显示任何图像

    我想将自定义图像设置为 UIBarButtonItem 但它只显示周围的矩形框并且不显示实际图像 func setupBrowserToolbar let browser UIToolbar frame CGRect x 0 y 20 wi
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • Swift 中的柯里函数

    我想创建一个返回柯里函数的函数 如下所示 func addTwoNumbers a Int b Int gt Int return a b addTwoNumbers 4 b 6 Result 10 var add4 addTwoNumbe
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic
  • NSDateFormatter 返回错误的日期 + Swift

    Code let dateString 2016 04 02 var formatter NSDateFormatter NSDateFormatter formatter timeZone NSTimeZone abbreviation
  • 迭代 NSOrderedSet

    我正在尝试迭代 NSOrderedSet 的实例 像这样的事情 func myFunc var orderedSet NSOrderedSet array 42 43 44 for n in orderedSet NSLog i n 但是
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • Swift getnameinfo IPv6 结果不可靠

    我有以下扩展sockaddr extension sockaddr Indicates if this is an IPv4 address var isIPv4 Bool return sa family UInt8 AF INET In
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • 如何使用 Swift 获取 YouTube 频道的所有播放列表?

    我的问题不是关于从一般频道检索视频 我只想获取该频道创建的所有 播放列表 并检索每个播放列表的缩略图 标题和视频数量 这是一个 YouTube 频道示例 正如您所看到的 有很多已创建的播放列表 截至目前 我只能获取某个频道最新上传的视频 在
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector

随机推荐

  • npm start 上的 webpack-dev-server 错误

    我正在尝试在 ng2 admin 上运行 npm start 一切正常 直到我执行 npm update 来尝试更新软件包 之后 npm 启动并出现错误 webpack dev server config config webpack de
  • 从 Android WebView 中启动地图

    我有一个 Android 应用程序 它在 WebView 中显示内容 其中包含一个应该打开地图的链接 我有要链接的位置的纬度 经度和街道地址 但我不确定链接的正确格式 大约一周时间没有收到社区对此的任何答复或评论 最后我只是选择 http
  • D3D11 不知从何增加了引用计数?

    我已经使用 d3d11 有一段时间了 在发现 directx 调试器之后 我最近发现我的程序从所有未正确释放的 com 对象中到处泄漏内存 经过一番窥探和盯着代码几个小时后 我开发了一些方法来隔离引用计数意外增加的位置 首先 所有对象都被包
  • 在数据库中存储 JS 数组和对象

    我有一个应用程序 可以让用户用 JS 构建东西 我希望用户能够保存其工作的当前状态以重用或共享它 但他拥有的是存储在 JS 数组中的 JS 对象的集合 具有非常不同的属性 颜色 标签 x y 位置 大小等 SQL 对于该特定任务来说似乎很糟
  • Jenkins:Git 推送将触发仅针对该分支的 Jenkins 构建

    我们正在多个 Git 分支上并行工作 当推送特定的 Git 分支时 我们如何启动 Jenkins 项目 作业来触发该特定分支的构建 举个例子 我们推送一个 Git 分支 feature abc gt 这应该会触发使用 拉动该分支 featu
  • 我可以阻止 numpy.array 将元素转换为 numpy 数组吗?

    我正在尝试将以下内容转换为间隔对象的 2x2 numpy 数组 from interval import interval from the pyinterval package import numpy as np np array in
  • 在循环内附加到 numpy 数组

    我真的希望没有遗漏一些东西 之前已经澄清过 但我在这里找不到东西 这个任务看起来很简单 但我失败了 我想在 for 循环中连续将一个 numpy 数组附加到另 一个数组 step n 10 steps np empty step n 1 f
  • 如何将 groovy 变量传递给 shell 块 jenkins

    我有一个常规变量 我想将其传递给 shell 块以进行进一步处理 但我不断收到粘贴在下面的错误 stages stage First Stage echo out available variables steps script def s
  • 有什么方法可以在免费的heroku dyno上添加免费的SSL证书吗?

    我有一个 heroku 免费计划 它在带有 PointDNS 附加组件的自定义域上运行 因此它可以为 DNS 提供商提供名称服务器 如果这很重要 我已在我的自定义域 https 上启动并运行该网站 但 ssl 证书指向 herokuapp
  • 将引导面板宽度设置为文本宽度

    我是 HTML Bootstrap 新手 所以也许这相当简单 How do you set the panel width引导面板 http getbootstrap com components panels其文本的长度 如果面板无法实现
  • wsdl2py 复杂类型

    如何向 SOAP 请求添加复杂类型 我正在使用 WSDL2py 生成的请求 并尝试使用它在 types py 文件中创建的其他 TypeDefinitions 例如 AccountInfo 用于身份验证 它会进入每个请求 然后将其传递给 w
  • 基于 webkit 的浏览器将 json 解释为脚本

    我只是尝试通过 js 获取我的 Zootool 项目 将它们推送到我的博客页脚中 但没有成功 这是我使用的代码 jquery框架 jQuery document ready function first try var url http z
  • 使用 jspdf 将图像 url 转换为 pdf

    function convertImgToBase64 url var canvas document createElement canvas var ctx canvas getContext 2d img document creat
  • 编译/运行时字符串文字的原始字节流入/流出 Windows(非宽)执行字符集,以及 ANSI 代码页与 UTF-8

    我想确认我对原始字符串文字和 非宽 的理解execution character set在 Windows 上 我希望具体确认的相关段落以粗体显示 但首先 有一些背景知识 背景 相关问题见下文bold 由于下面的有益讨论 TheUndead
  • 使用 Python 函数并生成所有导数

    我有一个参数数量可变的 python 函数 F x1 x2 xN 我想自动生成 N 个函数 表示 F 对每个参数的导数 F 1 dF dx1 F 2 dF dx2 F N dF dxN 例如 我可以同时提供 F x1 sin x1 和 F
  • C,从单个输入行读取多个数字(scanf?)

    我用 C 编写了一个应用程序 需要输入两行 第一个输入告诉 int 数组有多大 第二个输入包含由空格分隔的值 例如 输入以下内容 5 1 2 3 4 99 应该创建一个包含 1 2 3 4 99 最快的方法是什么 我的问题是读取多个数字而不
  • 在 WP7 上将 PivotItem 数据绑定到 ObservableCollection

    我想将 ObservableCollection 数据绑定到 WP7 中的 Pivot 控件 以便 ObservableCollection 中的每个对象都成为 PivotItem 这是我使用的代码
  • JavaScript 全局变量在函数内变为未定义

    由于某种原因 JavaScript 全局变量在函数内部变得未定义 不明白为什么 您可以复制并运行代码 正如您所看到的 全局变量 target 在第一个警报中定义 但随后在函数内变为未定义 这是代码
  • Python 中的快速排序实现

    我正在尝试在 python 中实现快速排序 但是 我的代码没有正确排序 不完全 例如 在输入数组 5 3 4 2 7 6 1 上 我的代码输出 1 2 3 5 4 6 7 所以 最终结果插入了 4 和 5 我承认我对 python 有点生疏
  • 如何定义 CollectionType 的扩展,以便其方法可用于字典?

    我最近能够更改扩展名 extension Array where Element Encodable to extension CollectionType where Generator Element Encodable 为了以后能够应