美文网首页
Swift中的几个高阶函数

Swift中的几个高阶函数

作者: 玉米地里种玉米 | 来源:发表于2019-03-19 11:07 被阅读0次

    sort

    有一个数组

    let Arr = [13, 45, 27, 80, 22, 53]
    
    // 使用sort进行排序,不省略任何类型
    let sortOneArr = Arr.sorted { (a: Int, b: Int) -> Bool in
        return a < b
    }
    

    // 编译器可以自动推断出返回类型,所以可以省略

    let sortTwoArr = Arr.sorted { (a: Int, b: Int) in
        return a < b
    }
    

    // 编译器可以自动推断出参数类型

    let sortThreeArr = Arr.sorted { (a, b) in
        return a < b
    }
    

    // 编译器可以自动推断出参数个数,所以可以用0,1替代

    let sortFourArr = Arr.sorted {
        return $0 < $1
    }
    

    // 如果闭包中的函数体只有一行,且需要有返回值,return可以省略

    let sortFiveArr = Arr.sorted {
        $0 < $1
    }
    

    // 最简化: 可以直接传入函数<

    let sortSixArr = Arr.sorted(by: <)
    

    map

    // 每个元素的平方

    let mapArr = Arr.map { $0 * $0 }
    

    compactMap

    /// Returns an array containing the non-nil results of calling the given
    /// transformation with each element of this sequence.

    let optionalArr = [nil, 4, 12, 7, Optional(3), 9]
    let compactMapArr = optionalArr.compactMap { $0 }
    

    ///

       let possibleNumbers = ["1", "2", "three", "///4///", "5"]
       let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
       // [1, 2, nil, nil, 5]
       let compactMapped: [Int] = possibleNumbers.compactMap { str in Int(str) }
        // [1, 2, 5]
    

    filter

    // 过滤偶数

    let evenArr = Arr.filter { $0 % 2 == 0 }
    

    reduce

    所有字符相连或者相加

    let stringArr = ["1", "2", "3", "*", "a"]
    let allStr = stringArr.reduce("") { $0 + $1 }
    //// 123*a
    
    let sum = intArr.reduce(0) { $0 + $1 }
    // 240
    let sum2 = intArr.reduce(0, +)
    

    高阶函数连掉

    // 对数组进行偶数过滤、之后进行所有元素秋平方、之后加和

    let chainArr = [4, 3, 5, 8, 6, 2, 4, 7]
    
    let resultArr = chainArr.filter {
                                $0 % 2 == 0
                            }.map {
                                $0 * $0
                            }.reduce(0) {
                                $0 + $1
                            }
    // 136
    

    相关文章

      网友评论

          本文标题:Swift中的几个高阶函数

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