Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift,多行@autoclosure_Swift - Fatal编程技术网

Swift,多行@autoclosure

Swift,多行@autoclosure,swift,Swift,@autoclosure是否只允许单行代码?示例2和3编译时出错 class Test { typealias TestConstructor = () -> AnyObject let constructor: () -> TestConstructor init(_ constructor: @escaping () -> TestConstructor) { self.constructor =

@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())
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()

它允许
单个表达式
,而不是
单行
。一个表达式可以是多行的,一行可以包含多个表达式。