美文网首页
Swift语法点

Swift语法点

作者: HWenj | 来源:发表于2016-02-23 14:33 被阅读177次
  • guard语法

guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。
但与if语句不同的是,guard语句只会有一个代码块,不像if语句可以if else多个代码块。
可以把guard近似的看做是Assert,但是你可以优雅的退出而非崩溃。

guard ... else {return} guard let ... else {return}相当于if not { return }

  • for in 循环

    //循环三次
    for i in 0...2 { 
    }
    //循环三次
    for _ in 0..<3 {
    }
    //循环imageCount次
    for i in 0...imageCount - 1 {
    }
    //循环imageCount次
    for var i = 0; i < imageCount; i ++ {
    }
    
数组的reduce,map,filter,forEach方法
  • forEach(遍历)

    let arr = [1, 2, 4]
    arr.forEach {
        print($0)
    }
    
  • map(映射)

    对数组元素进行某种规则的转换

    let arr = [1, 2, 4]
    let brr = arr.map {
        "No." + String($0)
    } 
    //brr = ["No.1", "No.2", "No.3"]
    
  • filter(筛选)

    对数组元素进行某种规则的过滤

    let arr = [1, 2, 4]
    let brr = arr.filter {
        $0 % 2 == 0
    }
    //brr = [2, 4]
    
  • reduce(累加)

    基础思想是将一个序列转换为一个不同类型的数据,期间通过一个累加器(Accumulator)来持续记录递增状态。

    它是 SequenceType 中的一个方法,看起来是这样的(简化版本):

    func reduce<T>(initial: T, combine: (T, Self.Generator.Element) -> T) -> T
    

    它拥有一个初始值(Initial value)以及一个闭包(返回值类型和初始值类型一致)。函数最后的返回值同样和初始值类型一致,为 T。

    对数组累加操作实现:

    func combinator(accumulator: Int, current: Int) -> Int {
          return accumulator + current
    }
    [1, 2, 3].reduce(0, combine: combinator)
    // 执行步骤如下
    combinator(0, 1) { return 0 + 1 } = 1
    combinator(1, 2) { return 1 + 2 } = 3
    combinator(3, 3) { return 3 + 3 } = 6
    = 6
    

    使用reduce方法实现map的功能

    let arr = [1, 2, 4]
    let brr = arr.reduce([]) {
        (sum : [Int] , current: Int) -> [Int] in
        var t = Array(sum)
        t.append(current * 2)
        return t
    }
    // brr = [2, 4, 8]
    //此方法如果数组很大, reduce第一个参数会不断在参数传递过程被复制然后丢弃, 运行效率很有问题。

相关文章

  • Swift 基本语法04-"switch"和

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • Swift 基本语法06-数组和字典

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • Swift 基本语法03-"if let"和

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法04-...

  • Swift 基本语法05-"String"

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

  • Swift语法点

    guard语法 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。但与if...

  • Swift基本语法之函数

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之数组和字典

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之元组和可选类型

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

  • Swift基本语法之闭包

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

网友评论

      本文标题:Swift语法点

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