zoukankan      html  css  js  c++  java
  • Swift

    第一,结构体声明和构造函数

    /** 结构体

    *  1,创建结构体变量,结构体的字段都必须有初始值,否则会报错

    *  2,结构体内部 只有在构造函数(init)中修改字段的值,在结构体内部中方法和属性内不能直接修改结构体内部字段的值

    *  3,在结构体外部,结构体变量,可以访问结构体字段,也可以修改结构体字段的值。

    */

     

    /**  构造函数

    *  1,swift语言中指定结构体构造函数,是init方法

    *  2,init执行方法,在创建结构体变量之前执行

    *  3,在创建结构体题变量的参数必须和构造函数init 参数必须一致

    */

    //无参构造函数

    struct student {

        // 第一种直接定义字段名 并且给字段名赋初始值

        var age = 0;

        // 第二种定义字段名并且指定字段类型

        var name :String;  //直接定义一个字符串字段name

        

       //定义 无参数构造函数

        init(){

            name = "swift";

            age  = 1;

        }  

    }

    //1: student () 创建一个结构体变量 ,系统会自动调用构造函数init()

    var stu = student ()

    println("name = (stu.name) , age = (stu.age)")

    运行结果:name = swift , age = 1

    第2,有参数构造函数

    /**

    *  1,student1 (Name:"swift",Age:0) 创建结构体变量 系统会调动构造函数,并且创建结构体的参数于构造函数参数一致

    *  2,student (Name:"swift",Age:0) 后面跟着的参数名称必须于构造函数参数变量名相同

    */

    struct student1 { 

        var age  = 1;

        var name :String; // 直接定义一个字符串变量。

        

        //定义 有参数构造函数

        init(name:String ,age:Int){

            //self 指的是当前结构体变量    self.name 当前结构体的变量的字段

            self.name = name;

            self.age = age;

        }

    }

    //因为构造函数有2个参数,所对应创建结构体的变量的参数要一致

    var stu1 = student1 (name: "swift-struct", age: 12)

    println("name = (stu1.name) ,age = (stu1.age)")

    //运行结果:name = swift-struct ,age = 12

    第3,有参数构造函数 参数变量加 _ 用法

    /**

    *  1,创建结构体的对象中对应参数必须和构造函数对应的参数一致

    *

    *  2,如果构造函数中参数变量前加 _ 其对应创建对象的参数,不需要变量名

    *

    *  3,init(_ x :Double ,_ y :Double) 构造函数中对应变量前面加 _ 其对应创建对象后面不需要变量名。

    */

    struct Point {

        var x = 0.0;

        var y = 0.0;

    //init(_ x :Double ,_ y :Double) 构造函数中对应变量前面加 _ 其对应创建对象后面不需要变量名。

        init (_ x:Double ,_ y:Double){

            self.x = x;

            self.y = y;

        }

    }

    var p = Point(10.0,11.0)

    println("x = (p.x),y =(p.y)")

    //运行结果:x = 10.0,y =11.0

    第4,结构体方法

    struct Test {

        //结构体里面有2个字段,一个x,一个y

        var x = 0;

        var y = 0; //这个=0是初值

        //给现有的点,x和y加上一个deltax

        //调用的适合obj.addOffset(100,deltay(形参):200);

        mutating func addOffset(deltax:Int,deltay:Int){

            //因为是结构体是一个拷贝的对象,是引用,从一个结构体复制另一个对象

            //mutating这个关键字是告诉可以修改里面的变量

            x += deltax;

            y += deltay;

        }

    }

    func testStructure(){

        //可以改变初值

        var s3 = Test();

        s3.x = 111;

        s3.y = 222;

        println("s3.x = (s3.x) s3.y = (s3.y)")

        

        //调用的适合obj.addOffset(100,deltay(形参):200);

        s3.addOffset(100 , deltay: 200);

        println("s3=(s3.x),s3.y =(s3.y)")

    }

    //别忘了调用

    testStructure();

    //运行结果:s3=211,s3.y =422

  • 相关阅读:
    goole的protoc文件[test_pb2.py]
    selenium中无页面基本配置
    连接数据库
    python计时器(打包exe即可)
    pip 升级 报No module named 'pip'错怎么处理-百度经验
    人脸识别之识别出某人并标记
    WIN7环境人脸检测及识别python实现系列(3)——为模型训练准备人脸数据
    安装pillow(python的图形界面库) PIL模块安装
    python 用pip安装cv2
    python调用摄像头拍照并保存
  • 原文地址:https://www.cnblogs.com/liaolijun/p/4571295.html
Copyright © 2011-2022 走看看