问题标签 [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.

0 投票
4 回答
6705 浏览

swift - 在 Swift 中,如何指定将 RawRepresentable 限制为 String 的类型别名?

我正在尝试定义一个需要实现enum原始值的协议String

我不相信目前可以强制使用enum,而且我不确定我是否真的在乎,只要我可以拨打电话fromRaw()并接收String.

因此,我试图保持以下内容的简洁性,同时将原始值限制Betaenuma String

上述问题是允许其他原始值,因此这是有效的:

为了解决这个问题,我目前正在这样做:

有没有一种方法可以在原始示例中声明typealias不同的限制?RawRepresentableString


更新

指定U: RawRepresentable where U.Raw == String似乎很有希望,所以我试了一下:

虽然这在技术上阻止使用除 a 以外的任何东西String,但我正在寻找编译时约束,这似乎导致运行时异常。

如果可能的话,我也希望由协议强制执行,而不是消费者需要检查.Raw == String

0 投票
1 回答
5878 浏览

swift - 如何在 Swift 中创建通用枚举的实例

我正在尝试在 swift 中编写一个函数,在这样的通用函数中创建一个 rawValue 枚举:

我错过了什么吗?

0 投票
3 回答
55135 浏览

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

0 投票
2 回答
2267 浏览

ios - Swift 2.1 ErrorType 不符合协议 RawRepresentable

我已经声明了错误类型

但我得到一个错误

Argument type 'UserServicesError' does not conform to expected type 'ErrorType'

Type 'UserServicesError' does not conform to protocol 'RawRepresentable'

知道吗?官方文档说这个声明就足够了。

Apple Swift 2.1 错误处理文档

0 投票
2 回答
1454 浏览

swift - 为任意的、基于 Int 的枚举定义 Swift 协议

我有这个表示颜色的枚举,并且我添加了几种方法来方便地基于原始值的算术运算获得新实例:

(这可以追溯到旧的枚举只是 int 常量)

问题是,我还有其他几个基于 int 的枚举,我想在其中引入类似的功能,但不重复代码。

RawRepresentable我想我应该在where上定义一个协议扩展RawValue == Int

...但这就是我对语法的理解结束的地方。

理想情况下,我希望需要一个返回案例数量的静态方法,并提供考虑到这一点的两者random()及以上的默认实现(而不是这里的硬编码 6)。shifted(_:)

结论:我接受了 Zoff Dino 的回答。尽管Rob Napier 给出的答案正是我所要求的,但事实证明我所要求的毕竟不是最优雅的设计,而另一个答案表明了一种更好的方法。不过,我对这两个答案都投了赞成票。感谢大家。

0 投票
1 回答
388 浏览

swift - RawRepresentable 类型的泛型似乎被误解为 self

为了使用NSCodingSwift 的 Enum 类型,我做了一个扩展NSCoder

encodeEnum方法适用于String-backed Enum,但是当我尝试像这样解码先前编码的 Enum 时:

我收到一个错误aDecoder.decodeEnumForKey("myKey")

我很确定它与泛型和条件有关Enum.RawValue == String。但我不明白,虽然它不起作用,但适用于encodeEnum().

0 投票
2 回答
1296 浏览

swift - 使用原始值枚举

为什么我不能用这样的原始值定义枚举?

0 投票
1 回答
632 浏览

swift - 在 Swift 中存储枚举类型

我正在为我的库(https://github.com/JiriTrecak/Warp)进行枚举序列化,并且在将枚举类型存储在属性中时几乎没有遇到什么困难(我需要知道该类型,以便我可以对其进行序列化/反序列化要求)。

我有一个结构,其中包含您可以拥有的所有属性的描述,包括它们的类型、远程键等,如果那是枚举,我想再存储一个可选信息,这是要在何时创建的枚举类型找到密钥(例如,性别)。

我尝试了两种方法,这两种方法都不可用:

A) 在容器定义中声明泛型类型

这行得通,这种方法的问题是我不希望每个 WRPProperty 都有枚举。通过这样声明,它会强制用户在创建属性时始终添加数据类型,这是不受欢迎的行为。我还可以创建 WRPEnumProperty 对象,但由于库如何处理这些定义以及用户如何定义它们,所以它不可用。

B) 在 init 方法中声明泛型类型

这不起作用,因为 RawRepresentable 只能用作通用约束。

所以我的问题是,我怎样才能存储枚举类型,然后我可以在任何时候创建该类型的任何枚举?(另外,我使用的是 Swift 2.2)

0 投票
5 回答
10292 浏览

swift - 类型“错误”不符合协议“RawRepresentable”

将我的 Playground 代码更改为 Swift 3,Xcode 建议更改

但现在我得到标题错误,我不知道如何让枚举符合该协议。

0 投票
1 回答
319 浏览

swift - 我想将 RawRepresentable 的 rawValue 作为 Any 返回,但我只将它作为 Any 接收

所以我有一个接收 an 的函数,Any它通过使用反射检查 Any 是否是枚举:

有谁知道我怎么能完成这样的事情?