自定义map/filter/reduce

作者: 微微笑的蜗牛 | 来源:发表于2015-12-04 17:34 被阅读56次

    map

    map就是将元素进行转换,变成另外的值。提供了一个转换函数func transform(value: T) -> U。下面我们来自定义array的map,扩展Array。

    extension Array {
        func myMap<U>(f: Element -> U) -> [U] {
            var result: [U] = []
            for elem in self {
                result.append(f(elem))
            }
    
            return result
        }
    }
    

    filter

    filter对元素进行帅选,返回满足条件的。

    func myFilter(f:Element -> Bool)-> [Element] {
            var result: [Element] = []
            for elem in self {
                if f(elem) {
                    result.append(elem)
                }
            }
            
            return result
        }
    

    reduce

    reduce是对元素逐个进行运算,如相加,相乘等。

    func myReduce<U>(initialValue: U, combine:(U, Element) -> U) -> U {
            var result = initialValue
            for elem in self {
                result = combine(result, elem)
            }
    
            return result
        }
    

    最后附上playground。https://github.com/silan-liu/map

    相关文章

      网友评论

        本文标题:自定义map/filter/reduce

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