- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如标题。例如:
enum MyEnum { case $SYMBOL}let $foo = MyEnum.$SYMBOL
我收到错误:“$”后面的预期数值
。
有趣的是,$可以用在变量名的中间。是否有我们可以在开始时使用的符号列表?
根据 Apple 的语言指南 ( link ):
Constant and variable names cannot contain whitespace characters, mathematical symbols, arrows, private-use (or invalid) Unicode code points, or line- and box-drawing characters. Nor can they begin with a number, although numbers may be included elsewhere within the name.
不禁止使用美元符号。
但是,Closure部分确实提到了使用 $0
、$1
作为速记参数名称:
Swift automatically provides shorthand argument names to inline closures, which can be used to refer to the values of the closure’s arguments by the names $0, $1, $2, and so on.
保留开头使用美元符号。这与之前的规则相矛盾。
Xcode Playground 使情况进一步复杂化。如果我创建一个 Swift Playground 文件并粘贴我的代码,该变量将被评估为 (Enum Value)
。
最佳答案
Can I use $ at beginning of variable name or enum symbol in Swift?
不。如果您查看Lexical Structure在“标识符的语法”部分下,您将看到允许作为 identifier_head 的所有字符范围的列表。 $
或 U+0024
未包含在列表中。
如果您进一步挖掘,您会发现enum-case-name是一个标识符和一个变量名称也是一个标识符,因此标识符的语法决定了允许的内容。
Dollar sign is not forbidden.
您链接的部分中的“禁止”字符列表似乎并不详尽。不难想出一些未列出但语法中未列出的字符:@
、#
、?
。 ..
Can you explain why my code does not fail in playground? Does playground get special treatment?
这可能是一个错误——只是 Playground 稍微宽松一些的情况。
关于swift - 在 Swift 中,我可以在变量名或枚举符号的开头使用 $ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312563/
我是一名优秀的程序员,十分优秀!