在 Swift 中,如何扩展类型别名?

2024-01-11

我有一个类型别名:

typealias BeaconId = [String: NSObject]

我想通过做类似的事情来扩展它:

extension BeaconId {}

但这会引发编译错误:

必须在非专用泛型类型“Dictionary”上声明约束扩展,并使用“where”子句指定约束

所以我最终做了:

extension Dictionary where Key: StringLiteralConvertible, Value: NSObject {}

有没有更干净的方法来做到这一点?


Swift 4.2 时更新: 你现在可以这样做

Example:

typealias KeyedNumbers = [String: Int]

extension KeyedNumbers {
    func squaredValue(forKey key: String) -> Int {
        return self[key]! * self[key]!
    }
}

有了这个(相当无用的)扩展,你可以这样做:

let pairs = ["two": 2, "three": 3]
print("2 squared =", pairs.squaredValue(forKey: "two"))

它会打印

2 的平方 = 4

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

在 Swift 中,如何扩展类型别名? 的相关文章

随机推荐

  • 从主窗体打开现有窗体

    我设计了两种形式 Form1 and Form2 Form1是主要形式 里面有一个按钮Form1 如果我点击按钮 那么Form2会弹出 我想做点什么Form2 click button in Form1 private void butto
  • 从 Spark 2.X 开始,无法使用 scala.None 值创建 org.apache.spark.sql.Row

    由于 Spark 2 X 无法使用 scala None 值创建 org apache spark sql Row Spark 1 6 X 是可能的 Caused by java lang RuntimeException Error wh
  • 在 JavaScript 中检测网页上的 fetch API 请求

    背景 我正在使用 Shopify ScriptTag 它允许我在店面添加 JavaScript 文件 我所拥有的只是该脚本文件 目前的行为 有一个选项 立即购买 允许客户跳过直接结帐添加到购物车 当他们点击现在购买 Shopify 发送fe
  • ggplot2 刻面换行:仅第一行的 y 轴刻度

    是否可以将 y 轴添加到构面包裹中 但仅限于第一行 如屏幕截图所示 我的情节代码 library ggplot2 mydf lt read csv https dl dropboxusercontent com s j3s5sov98q9y
  • 将新属性更新到现有节点 firebase(实时数据库)

    我是 firebase 实时数据库的新手 我有一个数据结构如下 我如何更新新属性 TimeOut 在同一节点而不损失当前属性 如果有人可以帮助我解决这个问题 我将不胜感激 如果您只需将该属性添加到您显示的节点上 那么 firebase da
  • Python:使用win32com将对象插入到Excel的特定行和列中

    我使用 Python 3 5 和 win32com 通过以下方法将对象 pdf 文件 插入到 Excel 中 Embedded object Add ClassType None Filename file loction Link Fal
  • 类连续数据

    我有一个 C 类 它有四个私有浮点数和一堆对此数据进行操作的非静态公共函数 是否可以保证或可以做到这四个浮点数是连续的并且没有填充 这将使该类的大小为四个浮点数 并且它的地址将是第一个浮点数的地址 这取决于你的编译器 您可以使用 pragm
  • Mongoose 是否支持 Mongodb `findAndModify` 方法?

    我想使用 Mongoose 使用 findAndModify 以原子方式增加字段 但是 下面的代码会抛出错误 TypeError Object has no method findAndModify defining schema for
  • 如何在 Suse 上从命令行安装软件包 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 suse版本是什么apt get or yum 如何从命令行安装软件包 一次相当激烈的谷歌搜索表明 这可能是yast or yast2 但没有理智HO
  • 如何将候选用户列表传递给 alfresco 中的 activiti 工作流任务?

    我希望能够传递作为任务候选者的用户列表 用户是从数据列表中检索的 不能作为一个组使用 Activiti candidateUsers 似乎是正确的方法 假设已获取用户并将其设置在变量 ipw reviwers 中
  • JBoss AS7 *.dodeploy 文件

    我们将应用程序打包为 war 文件 宣传对 JBoss AS5 的支持 并指示客户将 war 复制到他们的 JBoss 部署 目录中 并启动他们的应用程序服务器以部署 war 我们正在引入对 JBoss AS7 的支持 因此我们对 AS7
  • 无法正确编写签名助手应用程序代码

    我正在尝试对我的帮助应用程序进行代码签名 我已经为其创建了一个单独的配置文件 它是有效且有效的 我可以将其存档并导出以供 Mac App Store 提交 但是 当我运行主应用程序并将帮助程序添加为守护程序时 帮助程序应用程序开始运行 但它
  • GitHub 默认 README 标记

    这是一个与 GitHub 功能相关的非常简单的问题 该功能可以获取 README 文件并将其显示在任何存储库上 我知道它使用这个存储库可以做到这一点 https github com github markup 但想知道是否在没有任何扩展的
  • 垃圾收集器如何识别根

    标记 清除垃圾收集器的第一阶段是标记 查找 堆上的所有活动对象 为此 必须有一个起点或根 所有标记都从那里开始 GC如何识别这样的根 假设一组不同的对象是可访问的 这些对象被称为根 通常 这些对象包括从调用堆栈中任何位置引用的所有对象 即当
  • 通过 VPN 连接的 iPhone 远程调试

    当我的 iPhone 使用本地 WiFi 时 Xcode 会通过网络看到我的 iPhone 我的 Mac Pro 开发计算机正在运行带有 VPN 服务器的 macOS Server 当我从 iPhone 通过 VPN 连接到 Mac Pro
  • Qt:在构造函数内部连接 ​​- 在初始化对象之前会调用槽吗?

    我正在学习 Qt 框架 C 想知道 QT 是否有任何机制来保护插槽在对象完全初始化之前不被调用 考虑 A 类构造函数 A A mTreeView new QTreeView connect mTreeView QTreeView custo
  • 删除html表格中的外边框

    我正在开发 HTML 格式的报告 我那里有一张桌子 在每个 TD 中我都有另一个表 我想将 td 中的每个表分开 所以我启用了主表的边框 但内部表格很少需要显示单元格边框 但我不希望显示该特定内部表格的外边框 Ex table tr td
  • 是否可以使 VSO(Visual Studio Online)存储库公开可见?

    我喜欢 VSO Visual Studio Online 功能及其能力 但我希望其他用户 匿名 能够查看我的某个项目的存储库 我试图在项目设置中使用安全性内容 但无法弄清楚如何设置对我的存储库的公共访问 有可能吗 目前 没有 VSTS 目前
  • 当应用程序处于后台且具有数据负载时,如何处理 Android FCM 消息? [复制]

    这个问题在这里已经有答案了 当应用程序处于后台时 使用 FCM 的 Android 推送通知无法处理 默认消息显示在通知托盘中 任何人都可以帮助我如何在后台应用程序时处理消息 Override public void onMessageRe
  • 在 Swift 中,如何扩展类型别名?

    我有一个类型别名 typealias BeaconId String NSObject 我想通过做类似的事情来扩展它 extension BeaconId 但这会引发编译错误 必须在非专用泛型类型 Dictionary 上声明约束扩展 并使