類是面向對象編程楞件;結構體是面向協(xié)議編程(面向對象的升級)。
swift推薦在app中使用結構體(struct)媳溺,類(class)在swift中不處于主流地位掀泳。
結構體能實現(xiàn)類的全部功能雪隧,同時結構體更模塊化西轩,它默認實現(xiàn)初始化方法及無需考慮內存管理(自動計數(shù)引用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的全部參數(shù)庄拇,可以這么寫struct
struct Restaurant {
var name:String
var type:String
var location:String
var image:String
var isVisited:Bool
var rating = "" //變量實例化不加這個參數(shù)
//需初始化“實例化”時用到的變量
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
}
}