zoukankan      html  css  js  c++  java
  • Swift-Closures

      https://www.weheartswift.com/closures/

    • Currying  柯里化
      • e.g.1
      • //返回值为  参数为Int返回值为Int的闭包
        func addTo(adder: Int) -> Int -> Int {
             return {
                  num in 
                  return num + adder
                   }
        }
        
        let addTwo = addTo(2) 
        /* 
        addTwo = (num: Int) -> Int {
            return num + 2
        }
        */
        
        let result =addTwo(6)
      • e.g.2
      • //$0 闭包默认的第一个参数
        func greaterThan(comparer:Int) -> Int -> Bool {
                return {$0 > comparer}
        }
        
        let greaterThan10 = greaterThan(10)
        
        greaterThan10(12)
        greaterThan10(9)
      • e.g.3
      • func makeIterator(from start: Int, step: Int) -> () -> Int {
            var i = start
            return {
                let currentValue = i
                i += step
                return currentValue
            }
        }
        
        var iterator = makeIterator(from: 1, step: 1)
        
        iterator() // 1
        iterator() // 2
        iterator() // 3
        
        var anotherIterator = makeIterator(from: 1, step: 3)
        
        anotherIterator() // 1
        anotherIterator() // 4
        anotherIterator() // 7
        anotherIterator() // 10
    • Closures in Swift (原作者的警告⚠️:When you have a new hammer everything starts to look like a nail.)
      •   Array: Sort, Map, Filter, Reduce
        • Sort
        • var array = [3, 4, 5]
          array.sort(by: >) 
          
          // > is defined as function
          // sort does not return a new array
          // the original array has been changed
        • Reduce
        • sum = array.reduce(0, {$0 + $1})
          
          // or 
          
          sum = array.reduce(0, +) // operators are methods in Swift
        • Map
        • let array = [2, 3, 4]
          
          /// result is  [3, 4, 5]
          
          array.map{ $0 + 1}
        • Filter
        • let array = [2, 3, 4]
          let newArray = array.filter({ $0 > 3})
          //newArray = [4]
  • 相关阅读:
    中海洋朗讯杯比赛总结[2014年12月]
    青理工ACM比赛总结和反思[2014年11月]
    程序员技术练级攻略
    一天能学会的计算机技术
    UVa 1597
    回滚机制
    超时和重试机制
    降级特技
    限流详解
    隔离术
  • 原文地址:https://www.cnblogs.com/HackHer/p/8459043.html
Copyright © 2011-2022 走看看