作为标题。例如:
enum MyEnum { case $SYMBOL } let $foo = MyEnum.$SYMBOL
我得到error: expected numeric value following '$'
。
有趣的是,$可以在变量名称的中间使用。是否有我们可以在开始时使用的符号列表?
根据Apple的语言指南(link):
常量和变量名称不能包含空格字符,数学符号,箭头,专用(或无效)Unicode代码点或行和框图字符。它们也不能以数字开头,尽管数字可能包含在名称的其他地方。
不禁止美元符号。
但是,Closure部分确实提到使用$0
,$1
作为速记参数名称:
Swift自动为内联闭包提供简写参数名称,可用于通过名称$ 0,$ 1,$ 2等来引用闭包参数的值。
在开始时保留使用美元符号。这与先前的规则相矛盾。
Xcode Playground使情况进一步复杂化。如果我创建一个Swift playground文件并粘贴我的代码,该变量将被评估为(Enum Value)
。
答案 0 :(得分:1)
我可以在Swift的变量名或枚举符号的开头使用$吗?
否。如果您查看“标识符语法”下的Lexical Structure部分,您会看到允许的所有字符范围列表 identifier_head 。 $
或U+0024
未包含在列表中。
如果再深入挖掘一下,您会发现 enum-case-name 是标识符和变量名也是标识符,因此标识符的语法决定了允许的内容。
不禁止美元符号。
您链接的部分中的“禁止”字符列表似乎并非详尽无遗。不难想出那些未在语法中列出的字符:@
,#
,?
......
你能解释为什么我的代码在操场上没有失败吗?游乐场是否得到特殊待遇?
这可能是一个错误 - 只是一个操场稍微宽松的情况。