美文网首页
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语法点

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