关于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式循环,何尝不是一个好选择

相关文章
相关标签/搜索