&>.do { ... }

一个微型库,使我们能够用方法链的方式描述操作。

用法

let result: String = ""&>.map { Int($0) }&>.do { print($0 as Any) }

let value: String? = ""&>.filter { !$0.isEmpty }

let view: UIView = UIView()&>.do {
  $0.backgroundColor = .white
}
let someProperty = await fetch()&>.map { data in
  data.someProperty
}

动机

实际上,我并不沉迷于获得自定义运算符。
然而,**一个全局函数** 或 **运算符** 是在不自定义我们自己的类型的情况下添加新功能的唯一方法。

另一种方法是使用协议并像这样扩展它。
如果不添加该协议,它不能在结构体中使用。

事实上,这种结构看起来非常自然,因为 Swift 标准库中的所有方法链都来自一种 monad。
比如,OptionalArrayDictionary

这保持了 Swift 代码库一开始的简洁性。
在你声明一个结构体时,你没有任何方法!