问题标签 [rawrepresentable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 在 Swift 中,如何指定将 RawRepresentable 限制为 String 的类型别名?
我正在尝试定义一个需要实现enum
原始值的协议String
。
我不相信目前可以强制使用enum
,而且我不确定我是否真的在乎,只要我可以拨打电话fromRaw()
并接收String
.
因此,我试图保持以下内容的简洁性,同时将原始值限制Beta
为enum
a String
:
上述问题是允许其他原始值,因此这是有效的:
为了解决这个问题,我目前正在这样做:
有没有一种方法可以在原始示例中声明typealias
不同的限制?RawRepresentable
String
更新
指定U: RawRepresentable where U.Raw == String
似乎很有希望,所以我试了一下:
虽然这在技术上阻止使用除 a 以外的任何东西String
,但我正在寻找编译时约束,这似乎导致运行时异常。
如果可能的话,我也希望由协议强制执行,而不是消费者需要检查.Raw == String
swift - 如何在 Swift 中创建通用枚举的实例
我正在尝试在 swift 中编写一个函数,在这样的通用函数中创建一个 rawValue 枚举:
我错过了什么吗?
ios - Swift enum inheritance
Can you inherit enum in Swift? What are the rules that one should be aware of with regards to enum inheritance?
The following test code:
generates
ios - Swift 2.1 ErrorType 不符合协议 RawRepresentable
我已经声明了错误类型
但我得到一个错误
Argument type 'UserServicesError' does not conform to expected type 'ErrorType'
Type 'UserServicesError' does not conform to protocol 'RawRepresentable'
知道吗?官方文档说这个声明就足够了。
swift - 为任意的、基于 Int 的枚举定义 Swift 协议
我有这个表示颜色的枚举,并且我添加了几种方法来方便地基于原始值的算术运算获得新实例:
(这可以追溯到旧的枚举只是 int 常量)
问题是,我还有其他几个基于 int 的枚举,我想在其中引入类似的功能,但不重复代码。
RawRepresentable
我想我应该在where上定义一个协议扩展RawValue == Int
:
...但这就是我对语法的理解结束的地方。
理想情况下,我希望需要一个返回案例数量的静态方法,并提供考虑到这一点的两者random()
及以上的默认实现(而不是这里的硬编码 6)。shifted(_:)
结论:我接受了 Zoff Dino 的回答。尽管Rob Napier 给出的答案正是我所要求的,但事实证明我所要求的毕竟不是最优雅的设计,而另一个答案表明了一种更好的方法。不过,我对这两个答案都投了赞成票。感谢大家。
swift - RawRepresentable 类型的泛型似乎被误解为 self
为了使用NSCoding
Swift 的 Enum 类型,我做了一个扩展NSCoder
:
该encodeEnum
方法适用于String
-backed Enum,但是当我尝试像这样解码先前编码的 Enum 时:
我收到一个错误aDecoder.decodeEnumForKey("myKey")
:
我很确定它与泛型和条件有关Enum.RawValue == String
。但我不明白,虽然它不起作用,但适用于encodeEnum()
.
swift - 使用原始值枚举
为什么我不能用这样的原始值定义枚举?
swift - 在 Swift 中存储枚举类型
我正在为我的库(https://github.com/JiriTrecak/Warp)进行枚举序列化,并且在将枚举类型存储在属性中时几乎没有遇到什么困难(我需要知道该类型,以便我可以对其进行序列化/反序列化要求)。
我有一个结构,其中包含您可以拥有的所有属性的描述,包括它们的类型、远程键等,如果那是枚举,我想再存储一个可选信息,这是要在何时创建的枚举类型找到密钥(例如,性别)。
我尝试了两种方法,这两种方法都不可用:
A) 在容器定义中声明泛型类型
这行得通,这种方法的问题是我不希望每个 WRPProperty 都有枚举。通过这样声明,它会强制用户在创建属性时始终添加数据类型,这是不受欢迎的行为。我还可以创建 WRPEnumProperty 对象,但由于库如何处理这些定义以及用户如何定义它们,所以它不可用。
B) 在 init 方法中声明泛型类型
这不起作用,因为 RawRepresentable 只能用作通用约束。
所以我的问题是,我怎样才能存储枚举类型,然后我可以在任何时候创建该类型的任何枚举?(另外,我使用的是 Swift 2.2)
swift - 类型“错误”不符合协议“RawRepresentable”
将我的 Playground 代码更改为 Swift 3,Xcode 建议更改
至
但现在我得到标题错误,我不知道如何让枚举符合该协议。
swift - 我想将 RawRepresentable 的 rawValue 作为 Any 返回,但我只将它作为 Any 接收
所以我有一个接收 an 的函数,Any
它通过使用反射检查 Any 是否是枚举:
有谁知道我怎么能完成这样的事情?