Swift,多行@autoclosure
@autoclosure是否只允许单行代码?示例2和3编译时出错Swift,多行@autoclosure,swift,Swift,@autoclosure是否只允许单行代码?示例2和3编译时出错 class Test { typealias TestConstructor = () -> AnyObject let constructor: () -> TestConstructor init(_ constructor: @escaping () -> TestConstructor) { self.constructor =
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())
Test(
let object = CustomObject(title: "")
object.message = "").executeTest()
//示例2:init和@autoclosure
Test({
let object = CustomObject(title: "")
object.message = ""
}.executeTest())
Test(
let object = CustomObject(title: "")
object.message = "").executeTest()
//示例3:init带有@autoclosure和行分隔符
Test(let object = CustomObject(title: ""); object.message = "").executeTest()
它允许
单个表达式
,而不是单行
。一个表达式可以是多行的,一行可以包含多个表达式。