与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一样考虑空格或制表符作为代码的一部分吗?
答案 0 :(得分:5)
Swift并不认为空格很重要,但是在将字符分隔为词汇时会使用它们。
请考虑以下事项:
a != 1
a! =1
a!= 1
a!=1
第一个可以编译,因为词法分析正确识别词汇a
,!=
和1
,!=
是一个中缀运算符。
在第二个中,词法分析识别带有后缀运算符a
的词缀!
和带有前缀运算符1
的{{1}}。
第三个是lexem =
,带有后缀运算符a
和lexem !=
。
最后一个是不明确的,因为它可以是1
或a! = 1
。编译器可能根据运营商的优先级决定使用a != 1
。
空格被忽略但在区分模糊情况时仍然有意义。这在许多语言中实际上都是有效的。您可以定义自己的运算符这一事实限制了您的编码风格。
要进行比较,请尝试使用Java或C ++中的a! = 1
。会是a+++b
还是a++ + b
?
答案 1 :(得分:1)
感叹号不仅用作not
,例如。它还用于解包可选变量。
与其他语言有更多的语法差异。