美文网首页swift
Swift 的高阶函数,map、flatMap、filter、r

Swift 的高阶函数,map、flatMap、filter、r

作者: PierceDark | 来源:发表于2017-10-24 23:05 被阅读52次

    之前学习 Python 的时候,觉得还不错,然后发现 Swift 里面也有。

    1、map 函数 -- 对数组中的每一个对象做一次运算

            let stringArray = ["Objective-C", "Swift", "Python", "HTML5", "C",""]
            
            let resultAry = stringArray.map { (element) -> Int? in
                if element.length > 0 {
                    return element.length
                }else{
                    return nil
                }
                
            }
            print(resultAry)
            //[Optional(11), Optional(5), Optional(6), Optional(5), Optional(1), nil]
    

    2、fiatMap 函数 -- 也是对每个对象做一次运算,但是有区别

    区别1 不会返回 nil ,会把 optional 类型解包

            let stringArray = ["Objective-C", "Swift", "Python", "HTML5", "C",""]
            let resultAry = stringArray.flatMap { (element) -> Int? in
                if element.length > 0 {
                    return element.length
                }else{
                    return nil
                }
                
            }
            print(resultAry)
            //[11, 5, 6, 5, 1]
    

    区别2 会把N 维数组变成成一个 1维 数组 返回

            let stringArray = [["Objective-C", "Swift"], ["Python", "HTML5", "C",""]]
            
            let resultAry = stringArray.map { $0 }
            print(resultAry)
            //[["Objective-C", "Swift"], ["Python", "HTML5", "C", ""]]
    
            //flatMap
            let stringArray = [["Objective-C", "Swift"], ["Python", "HTML5", "C",""]]
            
            let resultAry = stringArray.flatMap { $0 }
            print(resultAry)
            //["Objective-C", "Swift", "Python", "HTML5", "C", ""]
    

    3、filter 过滤,数组中的元素按照 闭包里面的规则过滤

            let stringArray = ["Objective-C", "Swift", "Python", "HTML5", "C",""]
            
            let resultAry = stringArray.filter { (element) -> Bool in
                //元素长度大于5的 取出
                return element.length >= 5
            }
            print(resultAry)
            //["Objective-C", "Swift", "Python", "HTML5"]
    

    4、reduce 计算,按顺序对数组中的元素进行操作,然后记录操作的值再进行下一步相同的操作,可以想象成累加。

            let stringArray = ["Objective-C", "Swift", "Python", "HTML5", "C",""]
            
            let resultStr = stringArray.reduce("Hi , I'm PierceDark,") { (element1, element2) -> String in
                return element1 + " ," + element2
            }
            print(resultStr)
            //Hi , I'm PierceDark, ,Objective-C ,Swift ,Python ,HTML5 ,C ,
    

    这里就是这几个函数的基本使用了,不过这些函数的编译需要时间都比较久(和三目运算符一样),如果需要缩短编译时间,那么还得写 for循环。。 只不过阅读起来就没这么舒服了。

    相关文章

      网友评论

        本文标题:Swift 的高阶函数,map、flatMap、filter、r

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