如何在 Swift 中使用保留关键字作为类型名称声明和初始化嵌套枚举?
How to declare and init nested enum with reserved keyword as type name in Swift?
我很难弄清楚如何声明某个嵌套 enum
并调用其中一个自动构造函数。我试图声明的这个 enum
应该有一个保留关键字作为类型名称。
这是我正在尝试做的一个简化示例:
import Foundation
public class Foo {}
public extension Foo {
enum `Type`: Int {
case bar
}
}
var type: Foo.`Type`
type = Foo.`Type`(rawValue: 0)
这不能在 Swift 5.2 中编译并出现错误
error: type 'Foo.Type' has no member 'init'
我很确定这只是语法正确的问题,但我就是想不通。任何人都可以解释一下如何做,还是完全不可能?
没有办法做你想做的这件事。这就是为什么没有人使用名为 Type
的嵌套类型的原因,即使我们都想这样做——语言已经提供了这种类型,而且您不能用自己的类型覆盖它。我们都使用 Objective-C 风格的命名方式,即在没有适当分隔符的情况下直接将 Type 一词打掉。
FooType
是您必须使用的。
我很难弄清楚如何声明某个嵌套 enum
并调用其中一个自动构造函数。我试图声明的这个 enum
应该有一个保留关键字作为类型名称。
这是我正在尝试做的一个简化示例:
import Foundation
public class Foo {}
public extension Foo {
enum `Type`: Int {
case bar
}
}
var type: Foo.`Type`
type = Foo.`Type`(rawValue: 0)
这不能在 Swift 5.2 中编译并出现错误
error: type 'Foo.Type' has no member 'init'
我很确定这只是语法正确的问题,但我就是想不通。任何人都可以解释一下如何做,还是完全不可能?
没有办法做你想做的这件事。这就是为什么没有人使用名为 Type
的嵌套类型的原因,即使我们都想这样做——语言已经提供了这种类型,而且您不能用自己的类型覆盖它。我们都使用 Objective-C 风格的命名方式,即在没有适当分隔符的情况下直接将 Type 一词打掉。
FooType
是您必须使用的。