我剛從Swift開始,來自Objective-C。我有這條線:簡單的詮釋總和錯誤
self.collectionView?.insertItems(at: [IndexPath.init(row: (self.flights.count -1), section: 0)])
我在'count'後出現錯誤:Expected ',' separator
。
爲什麼我不能做一個簡單的總和,計數-1?斯威夫特的小怪癖,我還沒有學會,或它在早晨太早......
我剛從Swift開始,來自Objective-C。我有這條線:簡單的詮釋總和錯誤
self.collectionView?.insertItems(at: [IndexPath.init(row: (self.flights.count -1), section: 0)])
我在'count'後出現錯誤:Expected ',' separator
。
爲什麼我不能做一個簡單的總和,計數-1?斯威夫特的小怪癖,我還沒有學會,或它在早晨太早......
參考蘋果的「Lexical Structure」文檔:
圍繞操作員的空白被用來確定一個操作者 是否被用作一個前綴操作符,一個後綴運算符,或二進制 運算符。此行爲歸納爲以下規則:
如果運營商有大約兩側或周圍沒有任何一方的空白,它是作爲一個二元運算處理。例如,+++ b和a +++ b中的+++ 運算符被視爲二元運算符。
如果一個運算符僅在左側有空白,它將被視爲前綴一元運算符。例如,+++ b 中的+++運算符被視爲前綴一元運算符。
如果運算符僅在右側有空白,則將其視爲後綴一元運算符。例如,+++ b 中的+++運算符被視爲後綴一元運算符。
如果一個運算符在左邊沒有空格,但後面緊跟着一個點(。),那麼它將被視爲後綴一元運算符。 作爲示例,+++。b中的+++運算符被視爲後綴 一元運算符(a +++ .b而不是+++ .b)。
注:++
和--
已經從斯威夫特3.刪除有關更多信息,請0004 Swift evolution proposal。
意味着self.flights.count -1
中的minus運算符被視爲前綴一元運算符(第二條規則)。
爲了使其更清楚,編譯器將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)])
將'-'放在'1'前面沒有空格時Swift將'-'解釋爲前綴一元運算符。並且你有'self.flights.count(-1)',這在語法上是不正確的'' – user28434
請參閱[什麼是空格在swift中的規則](http://stackoverflow.com/questions/31301715/what-是最規則換空間,在-SWIFT)。 –
我想你的意思是「簡單的國際減排錯誤」... :) –