自定义map/filter/reduce

map

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

extension Array {
    func myMap(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(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)