如何在 Swift 中创建自定义高阶函数,如 .maps() 或 .filter()

Vik*_*nha 4 dictionary higher-order-functions swift

我只是在寻找 swift 中高阶函数的内部实现,例如 map、filter、reduce。

根据苹果文档。

@inlinable public func map(_transform: (Element) throws -> T) re throws -> [T]

返回一个数组,其中包含将给定闭包映射到序列元素的结果。

例如;

var arr = [1,2,3,4,5]

print(arr.map({$0*5}))
Run Code Online (Sandbox Code Playgroud)

输出将是

[5,10,15,20,25];

或者

print(arr.map({String($0)}))
Run Code Online (Sandbox Code Playgroud)

我只是想知道这里的计算基本上是如何工作的或者更高阶的内部工作原理。您能否在这里帮助我,了解映射在这里如何工作,例如如何处理值(相乘或转换为字符串)。

小智 6

您可以像这样创建自定义地图。在该序列下,您可以创建自己的高阶函数。

extension Sequence {

public func customMap2<T>(_ transform: (Element) -> T) -> [T] {

    var result = [T]()

    for item in self {
        result.append(transform(item))
    }

    return result
   }
}
Run Code Online (Sandbox Code Playgroud)