为何无法为Int类型的Swift枚举成员添加单引号?
为什么无法为Int类型的枚举成员添加单引号?
首先得澄清一个小混淆:你提到的“单引号”应该是Swift里的**反引号()**——就是你代码里包裹default`的那个符号。它的核心作用是帮我们转义Swift的关键字,让这些关键字能被用作变量名、枚举成员名这类标识符。
那回到你的问题:Int类型的枚举成员其实是可以加反引号的,完全没有限制!比如你可以把代码改成这样,完全能正常编译:
enum Theme: Int { case `default`, `dark`, `graphical` }
甚至如果给成员指定原始值,加反引号也没问题:
enum Theme: Int { case `default` = 0, `dark` = 1, `graphical` = 2 }
那你可能是遇到了这两种误区:
- 你误把**单引号(')**当成了反引号:单引号在Swift里是用来表示单个字符(Character类型)的,如果你尝试用单引号包裹枚举成员名(比如
case 'default'),这肯定会报错,因为标识符不允许这么写。 - 你尝试给Int枚举的原始值加单引号:比如写成
case default = '0',这也会报错,因为Int类型的原始值必须是整数字面量,而单引号包裹的是Character,类型不匹配。
再回到你给出的代码,default被反引号包裹是因为它是Swift的关键字(比如switch语句里的default分支),必须用反引号转义才能作为枚举成员名;而dark、graphical不是关键字,所以不需要加反引号——但如果你想加,完全没问题,和枚举是Int类型没有任何关系。
内容的提问来源于stack exchange,提问作者Laurence Wingo
相关产品推荐
相关产品推荐

