從今天開始,採用最棒的迴圈語法for in吧

寫程式的時候,迴圈是我們深深依賴,不能沒有的好幫手。假如沒有迴圈,光是簡單的1加到1000,打字就要打到天荒地老,再也沒有人願意當程式設計師!

直覺告訴彼得潘,在Swift 3傳統的for迴圈語法將被移除,不能再使用。(好吧,其實是Xcode 7.3冒出令人擔心的黃色警告,述說著”C-style for statement is deprecated and will be removed in a future version of Swift” )

Image for post
Image for post

別擔心,Swift並不是狠心拋棄了for迴圈,它只是希望我們使用更好,更簡潔,更易懂的for in語法,例如以下例子:

從1, 2, …一直加到10,每次多1。

var sum = 0
for i in 1…10 {

那如果希望倒著加,從10, 9, …一直加到1,每次少1,可以嗎?

當然可以呀,只要你願意承受程式執行當掉的後果。在Swift裡,range一定要由小到大,起點一定要小於等於終點,由大到小可是會遭天譴的!

Image for post
Image for post

如果真的任性地想要由大到小,其實還是有方法。藉由reverse( ) function的幫忙,即可將(1…10)轉換為從10開始,然後9, 8 …一直到1。

var sum = 0
for i in (1…10).reverse() {

如果想要每次加2,而不是加1,是不是就無解了呢? 開玩笑,對Swift來說,沒有不可能的任務,它可是程式界的伊森·韓特。只要呼叫數字的stride function,即可實現,例如以下例子:

stride function的through參數決定終點,by參數決定每次變化量。所以當for in 搭配0.stride(through: 10, by: 2),每次的i依序為0, 2, 4, 6, 8, 10。

var sum = 0
for i in 0.stride(through: 10, by: 2) {

如果不想包含終點的數字,則可採用另一個搭配to參數的stride function。此時to參數一樣代表終點的數字,但不能被包含。所以當for in 搭配0.stride(to: 10, by: 2),每次的i依序為0, 2, 4, 6, 8。

var sum = 0
for i in 0.stride(to: 10, by: 2) {

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store