废话不多说,先上代码
/// 快速配置对象(全局函数)
public func config<T>(_ target: T, block: ((T) -> Void)? = nil) -> T { return target }
应用
/// 应用于普通对象
let contentView = config(UIView()) {
$0.backgroundColor = UIColor.white
// ...
}
/// 应用于懒加载
lazy var contentView = config(UIView()) {
$0.backgroundColor = UIColor.white
// ...
}
对比传统方式
/// 传统对象创建和属性配置
let contentView = UIView()
contentView.background = UIColor.white
// ...
/// 传统懒加载
lazy var contentView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.white
return view
}()
看似好像没有简单多少,但是有几点好处:
- 代码更加简短,相比传统懒加载,不用创建对象容器,只管属性修改,不用管返回。
- 对象创建和属性配置代码写至一处,方便查找和修改。传统方式对象的创建和属性配置不在一处,可能需要翻阅大量代码。
- 全部以$0开头,简短统一,不用为起名问题而烦恼。
缺点:
- 若初始化对象所需要的参数不能简单的创建,则需要分开写。
- 若对象不需要设置属性,则会显得很奇怪。
网友评论