[英]Can I extend the Swift reserved word “enum”?
例如,我想添加如下内容:
extension enum : T {
convenience init? (rawData: T?) -> enum? {
guard let rawData = rawData else { return nil; }
return self.init(rawData: rawData);
}
}
我知道这可能不是为什么我需要扩展枚举的最佳案例,但我只是想探索各种可能性。 谢谢。
在“ Swift编程语言”的扩展中(添加了重点):
扩展为现有的类,结构,枚举或协议类型添加了新功能。
enum
是关键字,而不是类型,因此无法定义extension enum
。
如果您打算从可选的原始值中实例化一个枚举值,则可以定义一个“协议扩展” :
extension RawRepresentable {
init?(rawData: RawValue?) {
guard let rawData = rawData else { return nil }
self.init(rawValue: rawData)
}
}
这会向符合RawRepresentable
协议的所有类型(特别是具有原始值类型的所有枚举类型)添加新的初始化程序。
例:
enum Foo: String {
case a
case b
}
print(Foo(rawData: "a")) // Optional(Foo.a)
print(Foo(rawData: "x")) // nil
print(Foo(rawData: nil)) // nil
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.