码迷,mamicode.com
首页 > 编程语言 > 详细

Swift - 结构体

时间:2015-06-12 13:12:52      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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

/** 结构体

*  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

 

Swift - 结构体

标签:

原文地址:http://www.cnblogs.com/liaolijun/p/4571295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!