@autoclosure是否仅允许单行代码?示例2和3编译时出错
class Test {
typealias TestConstructor = () -> AnyObject
let constructor: () -> TestConstructor
init(_ constructor: @escaping () -> TestConstructor) {
self.constructor = constructor
}
init(_ constructor: @autoclosure @escaping () -> TestConstructor) {
self.constructor = constructor
}
func executeTest() { }
}
class CustomObject {
var title: String
var message: String
init(title: String) {
self.title = title
}
}
//示例1:不使用@autoclosure的init
Test({
let object = CustomObject(title: "")
object.message = ""
}.executeTest())
//示例2:使用@autoclosure初始化
Test(
let object = CustomObject(title: "")
object.message = "").executeTest()
//示例3:使用@autoclosure和行分隔符进行初始化
Test(let object = CustomObject(title: ""); object.message = "").executeTest()