1.定義一個struct
struct Point {
var x :Int
var y : Int
}
默認struct 會有一個以成員變量為參數(shù)的初始化函數(shù)
var p = Point(x:1,y:2)
2.為struct定義初始化方法
struct Point2 {
var x :Int
var y : Int
init(string:String){
let strs = string.componentsSeparatedByString(",");
x = Int(strs.first!)!
y = Int(strs.last!)!
}
}
初始化方法的調(diào)用
var p2 = Point2(string: "1,2")
如果自己聲明了init方法系統(tǒng)不會再生成默認的初始化方法
var p2 = Point2(x:1,y:1) //此時就會報錯
//如果還想用這個方法需要自己將默認生成的init方法實現(xiàn)
3.struct添加一個成員函數(shù)
struct Point3 {
var x :Int
var y : Int
func moveForNewPoint(xDistance:Int) -> Point3{
return Point3(x:self.x+xDistance,y: self.y)
}
}
在struct的成員函數(shù)中修改自己本身的值来涨,應(yīng)該在函數(shù)簽名上加上mutating關(guān)鍵字
struct Point4 {
var x :Int ;
var y : Int;
mutating func move(xDistance:Int){
self.x += x //不報錯
}
// func move2(xDistance:Int){
// self.x += x //報錯
// }
}
4.struct 是一個值類型
var p3 = Point(x:1,y:2)
var p4 = p3
p4.x = 1000
p3.x // 1