Swift 协议专用通用协议

2024-01-06

是否有可能有一个专门针对通用协议的协议?我想要这样的东西:

protocol Protocol: RawRepresentable {
  typealias RawValue = Int
  ...
}

这确实可以编译,但是当我尝试访问init or rawValue从 Protocol 实例来看,它的类型是RawValue代替Int.


在 Swift 4 中,您可以向协议添加约束:

protocol MyProtocol: RawRepresentable where RawValue == Int {
}

现在 MyProtocol 上定义的所有方法都将具有 Int rawValue。例如:

extension MyProtocol {
    var asInt: Int {
        return rawValue
    }
}

enum Number: Int, MyProtocol {
    case zero
    case one
    case two
}

print(Number.one.asInt)
// prints 1

采用 RawRepresentable 但 RawValue 不是 Int 的类型不能采用您的约束协议:

enum Names: String {
    case arthur
    case barbara
    case craig
}

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

Swift 协议专用通用协议 的相关文章

  • 如何在 Swift 3 iOS 10 中创建自定义相册

    这听起来可能是重复的 但经过搜索 我仍然没有得到 Swift 3 的预期答案 当我尝试使用添加资产时为资产创建占位符后addAssets 方法 Xcode 建议我将 assetPlacehoder 转换为 FastEnumeration 类
  • Swift:配对数组元素的最佳方法是什么

    我遇到了一个需要成对迭代数组的问题 最好的方法是什么 或者 作为替代方案 将数组转换为对数组 然后可以正常迭代 的最佳方法是什么 这是我得到的最好的 这个需要output成为一个var 而且它并不是很漂亮 有没有更好的办法 let inpu
  • GM 发布 Xcode 6 编译

    我刚刚下载了 Xcode 6 的 GM 版本 但无法编译并出现以下错误 Command Applications Xcode app Contents Developer Toolchains XcodeDefault xctoolchai
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • Swift 3:如何访问48字节CFData中matrix_float3x3的值?

    我正在尝试访问内在矩阵answer https stackoverflow com a 48159895 9296667 通过运行下面的命令 我能够得到一个 48 字节的任意对象 https developer apple com docu
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • scala中的协变类型参数需要在java接口中保持不变

    我有一个看起来像这样的特征 一些进一步的信息可以在我自己提出了这个相关问题 https stackoverflow com questions 3695990 inheritance and automatic type conversio
  • 重写某些 .Net Framework 控件的绘制以更改其边框颜色?

    SCENARIO 我正在使用第三方 Windows 视觉主题 当我看到我的应用程序时 它看起来像这样 但是当我使用正常的Aero主题 它看起来到处都有可怕的白色边框 QUESTION 我知道应用程序中使用的配色方案取决于视觉风格 但是 我可
  • iOS、通用链接、Swift。 continueUserActivity 未调用

    我正在为我们的 iOS 应用程序实现通用链接 这是我的一小部分 AppDelegate private func application application UIApplication openURL url URL sourceApp
  • 检查 WebRTC 连接 - 可靠的方法

    我有一个实时视频聊天应用程序 并且使用支持 STUN TURN 和 UPD TCP 传输的 TURN 服务器 有时用户可以连接到网络blocksWebRTC 连接的端口和协议就这么多不可能发生 通常这些是公司网络 我想在用户尝试相互连接之前
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 如何在 Swift 中从 UIColor 获取 RGB 代码(INT)[重复]

    这个问题在这里已经有答案了 我想在 Swift 中获取 UIColor 的 RGB 值 let swiftColor UIColor red 1 green 165 255 blue 0 alpha 1 println RGB Value
  • 使用未解析的标识符“FlurryAdInterstitial”

    我正在尝试整合Flurry Interstitial Ads使用cocoapods in Swift and Xcode 7 1 1 我正在关注开发人员雅虎网站上的此文档 https developer yahoo com flurry d
  • 任意通用列表的通配符

    我有一个类 MyClass 它不是通用的 包含任意 TList 并对其执行某些操作 我希望用通用 TList 替换 TList 但 MyClass 必须保持非通用 由于 Delphi 是不变的 这样的事情是行不通的 list1 TList
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • C# 抽象泛型方法

    C net 3 5 我正在尝试创建一个具有通用方法的基类 从它继承的类应该指定方法的类型 这样做的前提是创建管理过滤的类 所以我有 public abstract class FilterBase NEED Help Declaring t
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • 如何使用 RX 应用宽限时间?

    我有一个Observable
  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S

随机推荐

  • lambda 演算中的 Beta 约简:求值顺序重要吗?

    给定以下 lambda 表达式 其中 类似于lambda kf f c co km x dox le le 如果我转换的话会有错误吗 c co k into ko 我这样做了 但显然这是错误的 正确的方法是首先评估外部函数 这意味着 f f
  • 为什么 Django 1.9 在设置和 URL 中用列表 [] 替换 tuples () ?

    我有点好奇为什么 Django 1 9 在设置 URL 和其他配置文件中用列表 替换 tuples 我刚刚升级到 Django 1 9 并注意到这些变化 它们背后的逻辑是什么 INSTALLED APPS django contrib ad
  • 带 Joda 时间的本地化日期格式,不含年份

    我正在尝试以本地格式显示日期 但没有年份 所以应该是 12 June for UK June 12 for US 用Joda时间可以实现吗 我们尝试过 dd MMMM 模式 但它不起作用 我们已经尝试过了StringFormat longD
  • 使用 lodash 构建 Angular 2 CLI

    导入总是导致错误 找不到模块 lodash import from lodash 角度 cli build js module exports function defaults return new Angular2App default
  • 面对非阻塞I/O如何设计状态机?

    我正在使用 Qt 框架 该框架默认具有非阻塞 I O 来开发一个应用程序 该应用程序可以浏览多个网页 在线商店 并在这些页面上执行不同的操作 我将特定网页 映射 到状态机 我用它来浏览该页面 该状态机具有以下转换 Connect LogIn
  • 使用主构造函数继承类

    我有一个父类如下 interface ITask open class Task val targetServer Server ITask 然后有一个子级继承它并覆盖主构造函数 如下所示 data class FileTask val s
  • 使滚动条在 UIScrollView 上始终可见?

    我需要使滚动条在 viewDidLoad 上始终可见 以便用户可以了解有内容可以滚动 我做了以下事情 myscrollView flashScrollIndicators 但是滚动条只会在 viewDidLoad 之后出现一段时间 然后再次
  • node.js fs - “向后”流文件 - 从下到上

    使用 Node js 将文件从文件系统流式传输到 Node js 但从下到上向后读取它的最佳方法是什么 我有一个大文件 如果我只想要最后 10 行 从顶部读取似乎没有多大意义 这可能吗 现在我有这个可怕的代码 我们使用浏览器执行 GET 请
  • NuGet - 找不到“添加库包引用...”

    我正在使用安装了 MVC3 的 Visual Studio 2010 SP1 由于我正在学习 NuGet 基础知识 因此我正在阅读本教程http maleevdimka com post NuGet Part 1 aspx http mal
  • Nativecript Fontawesome 5 iPhone 无法工作

    我正在尝试让 Font Awesome 5 在 Android 上运行 但它不起作用 使用https github com NathanWalker nativescript ngx fonticon https github com Na
  • ListView ArrayAdapter,将子项隐藏在 Row 中?

    我觉得有点愚蠢 因为我找不到这个问题的答案 这让我觉得我实际上是在问wrong问题 然而 这里 我有一个列表视图和一个在 xml 中定义的 listviewitem 有几个字段 没有什么特别的 全部设置为可见 然后 我使用自定义 Array
  • 使用 GDB 调试模板

    My gdb是 GNU gdb Red Hat Linux 6 3 0 0 1 162 el4rh 我无法调试模板 如何使用此调试器调试模板 如果您的问题只是在代码中放置断点 这是一个小片段 例如 main cpp include
  • 32/64 位的 MSBuild 和 $(ProgramFiles) 问题

    我编写了一个自定义 MSBuild 任务 它调用SubWCRev exe 一个可执行文件 通常 驻留在C Program Files TortoiseSVN bin 无论是 32 位还是 64 位 因为 TortoiseSVN 提供这两个版
  • 隐藏地图注释而不删除它们

    使用 MKMapView 我加载了一堆注释 并且我希望能够过滤使用分段控件显示的注释 我使用带有类型变量的自定义注释 这样我就可以将它们彼此区分开来 但我无法找到一种方法来随意隐藏和显示注释视图的子集 当然可以 试试这个 Objective
  • 在ajax请求中设置$_SESSION

    我有这个 Jquery Ajax 函数可以在网页中登录 url ajax type POST url url data success function jsonResponse var json JSON parse jsonRespon
  • AWS IoT - 通过.Net、REST 和证书访问影子

    为了学习 AWS IoT 我创建了一些 事物 一个策略 我什至能够使用 IoT CLI 来列出事物 or 列表策略 我什至可以通过 CLI 更新影子更新事物通过 CLI 命令 但是一旦我尝试通过 REST GET POST 请求 通过 Ne
  • 如何使用 Homebrew 在 osx macOS Mojave 上安装 Java 8?

    目前 某些应用程序仍然需要 Java 8 例如 Android SDK Android Studio Jenkins 离子 With brew install java the latest版本已安装 但是如何安装Java 8呢 旧的 Or
  • pre 内的代码在 IE8 上排成一行

    我试图从 a 中获取价值textarea并将其放入一个pre tag 它在 chrome 和 mozilla 上工作正常 但在 IE8 上 整个内容保留在一行中pre tag jsbin链接 http jsbin com uwunug 4
  • 如何在dojo中加载一个不是模块的JS文件?

    首先我要说的是 我是一个 javascript 和 dojo 菜鸟 不过 我一直在使用 D O H 框架为我的 js 代码编写一些单元测试 我注意到的一件事是该框架似乎没有办法模拟 XHR 请求 所以我决定使用 sinon 来进行嘲笑 这是
  • Swift 协议专用通用协议

    是否有可能有一个专门针对通用协议的协议 我想要这样的东西 protocol Protocol RawRepresentable typealias RawValue Int 这确实可以编译 但是当我尝试访问init or rawValue从