swift -结构体

来源:互联网 发布:java打印 编辑:程序博客网 时间:2024/05/21 09:32
////  main.swift//  Struct-Demo-05//import Foundationprintln("结构体测试!")//结构体和C语言的结构体不同//swift结构体可以带函数/C++struct QHTest {    var x = 0;//定义一个结构体  x y     var y = 0;//0是初值    //定义结构体的构造函数    init(){//真正的构造函数    //定义一个空的构造函数, 构造函数是以init开头的 自动调用    //oc alloc init] 这个需要我们主动调用        NSLog("in init");    }    //构造函数参数,那么以后带上参数,必须携程QHTest(x:100,y:200);    init(x:Int,y:Int)    {        //定义了带有两个参数的构造函数        self.x = x;        self.y = y;        NSLog("in init(x:y)");    }        //_ underscore 这个可以让调用的时候不用写x:     // x: y: 这个就是label oc/label    init(_ x:Int,_ y :Int)    {        self.x = x;        self.y = y;    }        //但是结构体没有析构函数,和面向对象有点不同    func  getCenter()->Int{        return (x+y)/2;    }    //给现有的点x,y加上delta    //在调用的时候    //obj.addOffset(100,deltaY:200);    mutating func addOffset(deltaX:Int,deltaY:Int){            //因为结构体是一个拷贝的对象(是一个引用)        //函数内部是不能修改变量的        //mutating 是可以让函数修改里面的变量        x += deltaX;        y += deltaY;    }};func testStructure(){    //定义一个结构体    //结构体的定义是 结构体的名字()    var s = QHTest(x:100,y:200);    println("s.x = \(s.x) s.y = \(s.y)");    var s2 = QHTest();        s2.x = 111;    s2.y = 222;    println("s2.x = \(s2.x) s2.y = \(s2.y)");    //这种构造函数和我们c++ java类似了    var s3 = QHTest(333,444);    println("s3.x = \(s3.x) s3.y = \(s3.y)");    s3.x = 600;    let c = s3.getCenter();    println("c is \(c)");        s3.addOffset(100, deltaY: 200);    println("s3.x = \(s3.x) s3.y = \(s3.y)");}testStructure();

0 0