一个小而美的 Swift 框架:Then
的作者为 。正如作者的状态 一样,他在 GitHub 上的 contributions 绿油油的一片。正如作者的描述那样:,Then 确实会让人变「懒」。
Then 框架
是一个 Swift 初始化器的语法糖,简化了初始化(或者修改属性)的代码量。
Then 框架非常简单,代码量在 60 行左右。
then()
Then 框架对 NSObject 扩展一个 方法。下面是官方提供的一个示例:
let label = UILabel().then {
$0.textAlignment = .center
$0.textColor = .black
$0.text = "Hello, World!"
}
它等价于:
let label: UILabel = {
let label = UILabel()
label.textAlignment = .center
label.textColor = .black
label.text = "Hello, World!"
return label
}()
通过对比两块代码,可以明显的感觉到:
另外,对于自定义的类、结构体,可以通过扩展 Then 协议,来使用 :
extension MyType: Then {}
let instance = MyType().then {
$0.really = "awesome!"
}
还提供了 和 方法。
do()
UserDefaults.standard.do {
$0.set("devxoul", forKey: "username")
$0.set("devxoul@gmail.com", forKey: "email")
$0.synchronize()
}
可以减少代码的键入量。 和 的区别就是, 没有返回值, 会返回 self。
可以想象一下如果不用 do,上面的代码会出现多少个 。
with()
let newFrame = oldFrame.with {
$0.size.width = 200
$0.size.height = 100
}
newFrame.width // 200
newFrame.height // 100
为创建一个新值,对新值进行修改。
总结
Then 框架一共提供了三个方法,用于减少代码量:
用在初始化实体时(有返回值)
用在设置属性(无返回值)
对一个的实例进行复制,修改新实例的属性,返回修改后的实例。