如何在 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 是您必须使用的。