Then Swift 初始化对象语法糖
Then 是一个 Swift 初始化器的语法糖,简化了初始化(或者修改属性)的代码量。
Then 框架非常简单,代码量在 60 行左右。
Then 框架对 NSObject 扩展了 then()
方法。下面是官方提供的一个示例:
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 协议,来使用 then()
:
extension MyType: Then {} let instance = MyType().then { $0.really = "awesome!" }
另外还提供了 do()
和 with()
do()
do() 可以代码的键入量
UserDefaults.standard.do { $0.set("devxoul", forKey: "username") $0.set("devxoul@gmail.com", forKey: "email") $0.synchronize() }
with()
with()可以创建新值
let newFrame = oldFrame.with { $0.size.width = 200 $0.size.height = 100 } newFrame.width // 200 newFrame.height // 100
总结
Then 框架一共提供了三个方法:
then()
用在初始化,可以减少代码量。do()
用在设置属性,可以减少代码量。with()
复制原值,并修改新值的属性,返回修改后的新值。
do()
和 then()
的区别就是: do()
没有返回值,then()
将修改后的 self 进行了返回。
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……