一些在日常开发中很有用的函数和类型的集合。
为了帮助提高一些可组合性,在 Array
和 Result
上定义的一些现有 map 函数被设为全局符号。
public func map<A,B>(_ a: [A], _ f: (A) -> B) -> [B] { ...
public func map<A,B>(_ a: Result<A,Error> , _ f: (A) -> B) -> Result<B, Error> { ...
请查看 OptionalAPI Swift Package 以了解关于 Optional 的 map 和其他扩展。
完整实现看起来像这样
func identity<A>(_ a: A) -> A { a }
这可能看起来像是一个没用的函数,但是每次你在代码中写 { $0 }
时,你都在写这个完全相同的函数。让我们看一些例子
[1,2,3].map{ $0 } // [1,2,3]
同样可以使用 identity 来完成,但会更清晰
[1,2,3].map( identity ) // [1,2,3]
这取决于你需要什么。我使用它来在我的快照测试中生成变体。一个数组包含设备,另一个包含尺寸类别,语言方向... 你懂的 ;)
这个项目是 🐇🕳 Rabbit Hole Packages Collection 的一部分