我刚刚开始接触斯威夫特,从Objective-C的未来。 我有这样一行:
self.collectionView?.insertItems(at: [IndexPath.init(row: (self.flights.count -1), section: 0)])
我得到一个错误的说法: Expected ',' separator
后‘计数’。
究竟为什么我不能做一个简单的总和,计数-1? 斯威夫特的小怪癖,我还没有学会,或它在早晨太早...
我刚刚开始接触斯威夫特,从Objective-C的未来。 我有这样一行:
self.collectionView?.insertItems(at: [IndexPath.init(row: (self.flights.count -1), section: 0)])
我得到一个错误的说法: Expected ',' separator
后‘计数’。
究竟为什么我不能做一个简单的总和,计数-1? 斯威夫特的小怪癖,我还没有学会,或它在早晨太早...
参照苹果的“ 词法结构 ”文档:
围绕操作员的空白被用来确定操作者是否被用作一个前缀操作符,一个后缀运算符,或二进制运算符。 这种行为被概括为以下规则:
如果运营商已经围绕两侧或周围没有任何一方的空白,它被视为一个二元运算符。 作为一个例子,在一个+++ b中的+++操作者和一个+++ b的处理作为二进制运算符。
如果运营商对只有左侧的空白,它被视为一个前缀元运算符。 作为一个例子,在一个+++ b中的操作者+++被视为前缀一元运算符。
如果运营商对只有右边的空格,它被视为一个后缀一元运算符。 作为一个例子,在一个+++ b中的操作者+++被视为一个后缀一元运算符。
如果运营商在左侧没有空格,但由点(。),紧接着,它被视为一个后缀一元运算符。 作为一个例子,在一个+++ b。所述+++操作者将被视为一个后缀一元运算符(一个+++ .B而非+++ .B)。
注 : ++
和--
已经从斯威夫特3.删除有关更多信息,请查看0004斯威夫特发展的建议 。
意味着在减去运营商self.flights.count -1
为前缀的一元运算符(第二条规则)进行处理。
为了使它更清楚,编译器读取self.flights.count -1
为:self.flights.count,旁边有一减一 ,而不是减法运算。 通过应用第二个规则,负是为前缀元运算符1
。
显然,我们希望编译器把减号运算符二元运算符,所以你应该做的是周围添加减去两侧(应用第一规则)空白:
self.collectionView.insertItems(at: [IndexPath.init(row: (flights.count - 1), section: 0)])
希望这有助于。
所有你需要做的就是添加一个空格
self.collectionView?.insertItems(at: [IndexPath.init(row: (self.flights.count - 1), section: 0)])