一尘不染

来自编译器的此响应是否有效?

swift

以下代码调用错误。我在参考资料中找不到关于此的任何信息。’=’运算符右侧缺少空格是一个错误。

let names =["Anna", "Alex", "Brian", "Jack"]

可以编译此语法的任何其他组合。根据我们对Swift的了解,有人知道这是否真的是无效的语法吗?

编辑:错误响应是: Prefix/postfix '=' is reserved

答案:这段摘录似乎回答了我的问题。我只是找不到最长的时间:

运算符周围的空白用于确定将运算符用作前缀运算符,后缀运算符还是二进制运算符。以下规则总结了此行为:

如果运算符的两边或两边都没有空格,则将其视为二进制运算符。例如,a + b和a +
b中的+运算符被视为二进制运算符。如果运算符仅在左侧具有空格,则将其视为前缀一元运算符。例如,
b中的
运算符被视为前缀一元运算符。如果运算符仅在右侧具有空格,则将其视为后缀一元运算符。例如,a
b中的
运算符被视为后缀一元运算符。如果运算符的左侧没有空格,但是紧跟着一个点(。),则将其视为后缀一元运算符。例如,a
。b中的运算符被视为后缀一元运算符(a .b而不是 .b)。

摘录自:苹果公司“ The Swift Programming
Language”。iBooks。https://itun.es/us/jEUH0.l


阅读 147

收藏
2020-07-07

共1个答案

一尘不染

在后面添加一个空格=。(=[看起来太伤心是一个运营商。)它可能看到=value作为使用的(可能的,但没有实现)前缀运算符。

Swift并不像C那样与空格完全无关…特别是,它使用空格来区分前缀和后缀运算符(因为++i++在C中是语法奇数)。但是对于像Python这样的空白也不是很荒谬的。

2020-07-07