美文网首页
Swift 'for - in' 循环的各种姿势

Swift 'for - in' 循环的各种姿势

作者: _Choice_ | 来源:发表于2017-08-31 14:25 被阅读427次

前言

Swift取消了OC中的C形式的for循环。只用一种单一的for - in形式来取代。
本文将为大家介绍几种for - in的姿势。

常规用法

常规用法与OC中的'for - in'用法一致,如:

let testArr = [9,7,3,8,5,2,1,0,6]
for num in testArr {
    print(num)
}

过去在OC中我们想获取遍历的元素的索引都要通过i来获得,现在可以通过enumerate来获取

for num in testArr.enumerated() {
    print(num.element,num.offset)
}

通过enumerate可以方便的获得元素的下标和内容。官方注释中也提到了另外一种写法,使用元祖来方便获取元素索引。

for (n, c) in "Swift".characters.enumerated() {
           print("\(n): '\(c)'")
       }
    ///     // Prints "0: 'S'"
    ///     // Prints "1: 'w'"
    ///     // Prints "2: 'i'"
    ///     // Prints "3: 'f'"
    ///     // Prints "4: 't'"

同时,swift也提供了reverse()方法,用法与enumerate一致,可以反向遍历数组中的元素。

区间循环

  • ...表示闭区间,如:0...10,表示0至10并且包含10
  • ..<表示开区间,如:0..<10 表示0至9,不包含10
for i in 0..<10 {
    print(i)
}
//0 1 2 3 4 5 6 7 8 9

for i in 0...10 {
    print(i)
}
//0 1 2 3 4 5 6 7 8 9 10

stride语法

stride语法提供了更大的灵活性,满足不同的递增条件以和开闭区间的结合。

func stride<T>(from start: T, to end: T, by stride: T.Stride)
func stride<T>(from start: T, through end: T, by stride: T.Stride)
//from:开始位置 by:递增步长
//to:结束位置,开区间,不包含
//through:结束位置,闭区间,包含

如:

for i in stride(from: 0, to: 10, by: 2) {
    print(i)
}
//0 2 4 6 8

for i in stride(from: 0, through: 10, by: 2) {
    print(i)
}
//0 2 4 6 8 10

如果我们想让i递减,可以将步长也就是by设置成负值,实现递减遍历。

总结

swfit中 'for - in'循环的几种用法十分方便,通过搭配能够为日常的编码带来带来效率的提升。

相关文章

  • Swift 'for - in' 循环的各种姿势

    前言 Swift取消了OC中的C形式的for循环。只用一种单一的for - in形式来取代。本文将为大家介绍几种f...

  • swift基础小结1

    swift基础小结 for 循环OC与Swift对比 While循环与downhill循环 OC与swift使用的...

  • 用 Swift 架构 iOS 应用的正确姿势

    用 Swift 架构 iOS 应用的正确姿势 用 Swift 架构 iOS 应用的正确姿势

  • Swift学习笔记(三)——循环、函数、类、结构体

    ...为封闭循环,类似<=;..<为半开循环。类似< swift也有oc中的for in循环 swift中用rep...

  • Swift--内存管理

    Swift内存管理概述 强引用循环 打破强引用循环 闭包中的强引用循环 Swift内存管理概述 Swift中的AR...

  • 五.控制流程/Control Flow

    Swift提供了各种控制流程语句.这些包括: while多次执行任务的循环; if,guard以及switch基于...

  • 2018-07-09

    控制流 Swift提供了各种控制流程语句。这些包括while循环多次执行任务; if,guard以及switch基...

  • Swift-控制流(二)

    Swift提供了各种控制流语句。 这些包括while循环来执行多次任务; if,guard和switch语句,以根...

  • 2021-02-27

    Swift:解包的正确姿势 嗯,先来一段感慨 在掘金里面看见iOS各路大神各种底层与runtime,看得就算工作了...

  • Swift循环语句和条件判断语句

    for循环 Swift提供了两种for循环语句,一种是C语言的for循环:条件递增,这种方式在SWift3.0中遗...

网友评论

      本文标题:Swift 'for - in' 循环的各种姿势

      本文链接:https://www.haomeiwen.com/subject/lydqjxtx.html