一种新的设计模式,允许闭包初始化。
要运行示例项目,首先克隆仓库,然后从“示例”目录运行 pod install
。
希望能够在闭包内进行独特定制,同时允许使用常量。
先前代码
// needs to be "var" to allow append below
var randomNumbersArray: [Int] = []
for _ in 0...10 {
randomNumbersArray.append(Int(arc4random_uniform(100)))
}
新代码
// can now use let and append within initializer closure
let randomNumbersArray: [Int] {
for _ in 0...10 {
$0.append(Int(arc4random_uniform(100)))
}
}
struct Person: Inlinit {
var age: Int = 0
var name: String?
}
// initialize & set properties
var me = Person {
$0.name = "Jo"
$0.age = 32
}
// update properties
me <- {
$0.age = 30
$0.name = "John"
}
func newLabel(text: String) -> UILabel {
let label: UILabel = UILabel(frame: CGRect(x: 10, y: 10, width: 100, height: 40))
label.text = text
label.textColor = UIColor.magentaColor()
return label
}
newLabel("This is lame...")
新代码
func newLabel(text: String) -> UILabel {
return UILabel {
$0.frame = CGRect(x: 10, y: 10, width: 100, height: 40)
$0.textColor = UIColor.magentaColor()
}.text = text
}
newLabel("This is Awesome!")
这种新的设计模式打开了许多可能性
Inlinit 通过 CocoaPods 提供。要安装它,请简单地将以下行添加到 Podfile 中:
pod "Inlinit"
Inlinit 还可以通过 Swift Package Manager 提供。请查看链接以了解如何使用 SPM 的更多信息。
import PackageDescription
let package = Package(
name: "YOUR_PACKAGE_NAME",
dependencies: [
.Package(url: "https://github.com/joalbright/Inlinit.git", majorVersion: 0)
]
)
Inlinit 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。