關於for循環------swift3.0

      在程序開發當中,for循環使用的頻率無疑是最高的。經常使用的swift循環是遞增式遍歷。固然各類循環,swift都能辦到。但其大多采用關鍵字形式實現,大部分開發者更喜歡直接使用C式循環代碼。在swift3.0後,C語言形式被完全廢棄,所以從低版本升上來的代碼若是是swift風格寫法,按照提示基本能夠直接fix。但若是不少循環實現都是基於C語言形式,那不得不討論一下如何拯救這個可怕的習慣了。swift的循環語言特性跟python最爲接近(ps:我學的語言當中最接近)。因此,大多數python循環能處理的狀況,swift都能辦到且更爲優雅。python

1:如何遍歷一個字典或者數組?swift

      首先要提的是swift的for..in..語法,這個語法在python當中被稱之爲迭代。用於數組,字典之類的數據內容遍歷。從做用上分析,是直接將數組元素賦值給變量,並取出,無需經過數組下標來取值。而針對於字典,除了取出key值,咱們還能夠同時取出關鍵字。具體代碼以下數組

let list = [1,3,5,7,"string test"]
for i in list{
    print(i)
}
let dict = ["name":"key name","name1":"key1 name","name2":"key 2 name"]
for key in dict{
    print(key)
}
}

2:也許,我僅僅是須要一個計數器?閉包

      更多時候,循環變量被用於約束循環的次數或者作爲int類型進行引用,值得一提的是,swift支持直接區間遍歷。在3.0版本以前,python的區間語法range關鍵詞適用。在3.0之後。swift不推薦使用。而且基於自身語言特性,在使用時,須要額外加關鍵字。那麼,咱們如何用swift帶來的語法糖寫出漂亮的for循環呢 代碼以下:函數

for i in 1..<10{
    print(i)
    // 打印結果爲1-9
}
for i in 1...10{
    print(i)
    //打印結果爲1-10
}

for i in Range(start: 1,end: 10){
    print(i)
    // 打印結果爲1-9 不推薦使用 
}

  3:help 我真的須要遞減! ui

    這也許是swift的一個大坑了,固然解決方式很容易。只須要一個關鍵字便可實現,swift3.0以後稍有變化。對要遍歷的區間調用reverse()方法,便可實現for循環的反向遍歷,代碼以下spa

for i in (0...10).reverse(){
    print(i)
// 打印結果爲10-0 }

  4:這就結束了嗎對象

    固然不是啦,從語言特性上來上說,python對數組和循環的處理是最使人以爲溫馨的。而在循環的處理上,幾乎涵蓋了python的全部特性,且大多也是以函數調用的方式來處理的。下面就要介紹一下平時可能會用到的一些方法。blog

4.1.enumerate索引

   如詞,這是爲遍歷對象調用一個枚舉方法,在對數組等結構進行遍歷時,咱們偶爾須要知道每次遍歷的索引,那麼就須要用到enumerate了,其返回對象是一個元組,形式爲(x,y),x表明遍歷的索引值,y表明遍歷的元素。代碼以下:

for (index, i) in (1...10).enumerate(){
    print(index)// 遍歷索引
    print(i) // 遍歷元素
    
}

4.2 filter

     也許,你想要在循環就過濾掉一系列毫無心義的數據?,swift提供在循環時直接過濾的方法,代碼以下:

for i in (1...10).filter({ i in i % 2 == 0}) {
    print(i)
    //輸出結果爲1-10之間的偶數
}
///////////補充一個漂亮的語法糖///////////
for i in (1...10).filter({ $0 % 2 == 0}) {//swift閉包能夠省略參數且用$0匿名,第二個參數則用$1,以此類推
    print(i)
    //輸出結果爲1-10之間的偶數
}

  

  如上,除了單獨調用方法對循環進行處理以外,swift還支持在循環中嵌套調用各類方法,這使得對數據的處理更爲方便快捷,因此,也許完全放棄C式循環,何嘗不是一個好選擇

相關文章
相關標籤/搜索