为什么Swift在编译代码时无法删除空格?

时间:2016-09-04 14:27:08

标签: swift

与Java和C ++相比,Swift相当新...我只是想知道为什么Swift在编译代码时不会删除空格,如下所示:

if x!=10 {...} //I have to add space before and after != to get rid of issue.

增量像增量++也不能作为增量用于语法如果我不在增量++和{循环块之间放置一个空格。

在Java或C ++中,space和Tab在编译方面没有意义。 Swift就像Python一样考虑空格或制表符作为代码的一部分吗?

2 个答案:

答案 0 :(得分:5)

Swift并不认为空格很重要,但是在将字符分隔为词汇时会使用它们。

请考虑以下事项:

a != 1
a! =1
a!= 1
a!=1

第一个可以编译,因为词法分析正确识别词汇a!=1!=是一个中缀运算符。

在第二个中,词法分析识别带有后缀运算符a的词缀!和带有前缀运算符1的{​​{1}}。

第三个是lexem =,带有后缀运算符a和lexem !=

最后一个是不明确的,因为它可以是1a! = 1。编译器可能根据运营商的优先级决定使用a != 1

空格被忽略但在区分模糊情况时仍然有意义。这在许多语言中实际上都是有效的。您可以定义自己的运算符这一事实限制了您的编码风格。

要进行比较,请尝试使用Java或C ++中的a! = 1。会是a+++b还是a++ + b

答案 1 :(得分:1)

感叹号不仅用作not,例如。它还用于解包可选变量。

与其他语言有更多的语法差异。