Swift中函数调用操作符与加法操作符需空格分隔的语言依据咨询
Swift中函数调用操作符与加法操作符需空格分隔的语言依据咨询
嗨,这个问题我之前排查代码时也碰到过,其实核心是Swift的词法分析规则在起作用,我来给你对应到官方语言规范的依据~
首先看你写的这段代码:
func f() -> String { "a" } print(f()+ f())
编译时弹出的两个错误,本质是Swift的词法解析器没法正确识别f()+这个字符序列:它既不是Swift定义的合法后缀操作符组合,还会让解析器误以为你在给print传参时漏了逗号分隔符。
这背后的规则在Swift官方语言参考的词法结构和操作符章节里有明确说明:
- Swift的词法分析遵循「最长匹配原则」,会尽可能把相邻字符组合成合法的token。当函数调用的闭括号
)直接紧跟+时,解析器会尝试把这部分内容合并成一个token,但()+并不是合法的后缀操作符,所以触发错误提示。 - 对于
+这类二元操作符,官方规则要求操作符与左右操作数之间必须用空白分隔,尤其是当操作符紧跟在括号、标识符或字面量之后时,空白是语法解析的必要条件——这可不是单纯的编码风格建议,而是硬性的语法要求。
把代码改成下面这样,给+前后加上空格,就能正常编译运行了:
func f() -> String { "a" } print(f() + f())
内容来源于stack exchange
相关产品推荐
相关产品推荐

