Swift中能否用`Type`命名自定义类型?为何编译后无法正常使用?
Swift中能否用
Type命名自定义类型? 结论
可以用Type作为自定义类型名,但必须全程用反引号包裹,以此区分Swift内置的Type元类型语法。
细节解释
- Swift里的
Type是元类型关键字(比如Foo.Type用来表示Foo的元类型),直接用它命名自定义类型会和这个内置语法冲突,所以编译器会报错。 - 用反引号包裹的
enumType``能编译,是因为Swift允许通过反引号将关键字/保留字当作普通标识符使用,此时编译器会把它识别为你自定义的名称,而非内置语法。 - 你调用时
Foo.Type.a报错,是因为这里的Type仍被编译器解析成了内置的元类型,而非你定义的自定义枚举。正确的调用写法是Foo.Type.a,用反引号明确指定要访问的是自定义的Type类型。
完整示例
class Foo { enum `Type` { case a, b } } // 正确调用 let exampleValue = Foo.`Type`.a
内容的提问来源于stack exchange,提问作者pkamb
相关产品推荐
相关产品推荐

