是否有可能有一个专门针对通用协议的协议?我想要这样的东西:
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(使用前将#替换为@)