类是面向对象编程;结构体是面向协议编程(面向对象的升级)。
swift推荐在app中使用结构体(struct),类(class)在swift中不处于主流地位。
结构体能实现类的全部功能,同时结构体更模块化,它默认实现初始化方法及无需考虑内存管理(自动计数引用ARC)。
一、结构体只需要给出变量的类型
struct Restaurant {
var name:String
var type:String
var location:String
var image:String
var isVisited:Bool
}
二、类需要给出变量的初始值
class Restaurant {
var name:String
var type:String
var location:String
var image:String
var isVisited:Bool
init(name:String,type:String,location:String,image:String,isVisited:Bool) {
self.name = name
self.type = type
self.location = location
self.image = image
self.isVisited = isVisited
}
}
二者作用等价。
ps: 实例化时没有用到struct的全部参数,可以这么写struct
struct Restaurant {
var name:String
var type:String
var location:String
var image:String
var isVisited:Bool
var rating = "" //变量实例化不加这个参数
//需初始化“实例化”时用到的变量
init(name:String,type:String,location:String,image:String,isVisited:Bool) {
self.name = name
self.type = type
self.location = location
self.image = image
self.isVisited = isVisited
}
}