Swift中如何打印结构体方法的输出?print调用报错如何解决?
报错原因
Swift 中类、结构体、枚举的定义作用域内,仅允许声明属性、方法、构造器、下标、嵌套类型这几类成员,不支持直接编写执行语句。你写的print(getDetails())属于执行代码,不能直接放在结构体内、任意方法之外的位置,编译器识别到这行不符合成员声明规则,会误判为你要定义一个新函数,因此抛出「Expected '{' in body of function declaration」的错误。
正确实现方案
你可以选择以下任意一种方式实现打印需求:
- 方案1:将打印逻辑封装为结构体的成员方法,实例化后调用
struct Car { let make:String = "MINI" let model:String = "COOPER" let year:String = "2015" var details:String { return year + " " + make + " " + model } func getDetails() -> String { return details } // 封装打印逻辑为成员方法 func logDetails() { print(getDetails()) } } // 实例化后调用方法执行打印 let myCar = Car() myCar.logDetails()
- 方案2:在结构体外部的可执行作用域,实例化后直接调用方法打印
struct Car { let make:String = "MINI" let model:String = "COOPER" let year:String = "2015" var details:String { return year + " " + make + " " + model } func getDetails() -> String { return details } } // 全局/入口作用域下执行打印 let myCar = Car() print(myCar.getDetails())
内容的提问来源于stack exchange,提问作者LukasDreams
相关产品推荐
相关产品推荐

