• swift -结构体


    //
    //  main.swift
    //  Struct-Demo-05
    //
    
    import Foundation
    
    println("结构体測试!")
    //结构体和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();
    

  • 相关阅读:
    UVa 11090
    针对于取数字型的01背包与完全背包的一点想法
    T^T online judge 1372其实这题题目这么短就是为了让你AK
    AcWing 275. 传纸条
    AcWing274.移动服务
    AcWing273.分级
    第四集,我猜题意老牛逼(划掉)了
    linux环境下c++实现FILETOOLS
    FIFO算法,LRU算法,OPT算法,LFU算法的C++实现
    vscode 通过 coderunner 配置C++ 编译环境 (更新版 2019/6/7)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8404800.html
Copyright © 2020-2023  润新知