✨ Super sweet syntactic sugar for Swift initializers.
Initialize UILabel then set its properties.
letlabel=UILabel().then{
$0.textAlignment =.center
$0.textColor =.black
$0.text ="Hello, World!"}This is equivalent to:
letlabel:UILabel={letlabel=UILabel()
label.textAlignment =.center
label.textColor =.black
label.text ="Hello, World!"return label
}()You can use
then()to all ofNSObjectsubclasses.letqueue=OperationQueue().then{ $0.maxConcurrentOperationCount =1}
Want to use with your own types? Just make extensions.
extensionMyType:Then{}letinstance=MyType().then{ $0.really ="awesome!"}
Use
with()when copying the value types.letnewFrame= oldFrame.with{ $0.size.width =200 $0.size.height =100} newFrame.width // 200 newFrame.height // 100
Use
do()to do something with less typing.UserDefaults.standard.do{ $0.set("devxoul", forKey:"username") $0.set("devxoul@gmail.com", forKey:"email") $0.synchronize()}
Here's an example usage in an UIViewController subclass.
finalclassMyViewController:UIViewController{lettitleLabel=UILabel().then{
$0.textColor =.black
$0.textAlignment =.center
}lettableView=UITableView().then{
$0.backgroundColor =.clear
$0.separatorStyle =.none
$0.register(MyCell.self, forCellReuseIdentifier:"myCell")}overridefunc viewDidLoad(){
super.viewDidLoad()self.view.addSubview(self.titleLabel)self.view.addSubview(self.tableView)}}Using CocoaPods:
pod'Then'
Using Swift Package Manager:
import PackageDescription letpackage=Package( name:"MyAwesomeApp", dependencies:[.Package(url:"https://github.com/devxoul/Then", majorVersion:2),])
Then is under MIT license. See the LICENSE file for more info.