前端之家收集整理的这篇文章主要介绍了
swift的struct结构体类型介绍使用,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<span style="font-size:24px;">struct David {
var x = 0;//定义一个结构体,两个字段x,y
var y = 0;//初始值
//定义结构体的构造函数
init(){
//定义一个空构造函数,真正的构造函数,调用时候不带参数调用这里
//构造函数是以init 开头的,自动调用
// [[oc alloc]init]不是构造函数
println("in init");
}
init(x:Int,y:Int){
self.x = x;//定义带有2个参数的构造函数,带双参数的时候调用这里
self.y = y;
println("in init(x:y:)")
}
//结构体有构造函数,没有析构函数
func getCenter()->Int{
return (x+y)/2;
}
//给现有的点x,y加偏移量
//obj.addOffset(100,deltaY:)
mutating func addOffset (deltaX:Int,deltaY:Int){
//结构体是拷贝的对象,函数内部不能修改变量
//需要修改,加关键字mutating,//mutating,可以修改构造函数内部变量
x += deltaX;
y += deltaY;
}
};
func testDavid(){
//定义一个结构体
//结构体的定义是 结构体的名字(参数名:参数值)
var d = David();//调用构造函数init()
var s = David(x: 100,y: 200);//调用构造函数init(x,y)
println("s.x = \(s.x),s.y = \(s.y)")
let c = s.getCenter();//调用析构函数getCenter
println("c is \(c)");
s.addOffset(100,deltaY: 200);//因为析构函数没有返回值,所以不能赋值给变量
println("d is :\(s.x)");
}
testDavid();//测试函数调用
</span>