Swift-结构体

来源:互联网 发布:百胜软件单机版 编辑:程序博客网 时间:2024/04/30 12:47

//定义结构体理解为定义一种类型

struct Point{

  var x,y:Double

}

 

struct Size {

  var width, height:Double

}

 

struct Rect1{

  var origin:Point

  var size:Size

}

 

//初始化(方法是系统自带的);也可以有自定义的初始化方法

var point1=Point(x:11.1,y:222)

var xxx=point1.x

 

//结构体可以带算值属性,属性观察

//可以内置方法

struct Rect2{

   var origin:Point  //可定义为结构体类型

  var size:Size

    

  var area:Double{

      get{

           return10//size.width * size.height

       }

       set(newRect){//使用别名newRect代替newValue

          size.height = newRect /size.height

           println("新值=\(size.height)")

       }

    }

    

  func isBiggerThanRect(other:Rect2)->Bool{

      return self.area > other.area

    }

}

 

//扩展结构体Rect2

extensionRect2 {

   var计算1:Double{

       returnsize.height * size.width

    }

  mutatingfunc increaseByFactor(factor:Double) {

      size.height *= factor

      size.width *= factor

    }

}

 

var varrect1 =Rect2(origin:Point(x:0, y: 0), size: Size(width: 10, height: 5))

varrect1.area

varrect1.area = 100

 

varrect1.increaseByFactor(10.0)

varrect1.size.height

varrect1.计算1

 

 

 

//结构体和类的区别:

//1、结构体不能继承 2、结构体是值传递(会复制对象),类是引用传递(传递对象的地址)

 

 

 

//结构体内部值的修改-用关键字mutating

struct Point3{

  var x,y:Double

  func printmethod()->String{

      return "ABC"

    }

  mutatingfunc moveToTheRightBy(dx:Double){

      x += dx

    }

}

//定义为结构体变量才能修改内部值

var p3 =Point3(x:0.0, y:0.0)

p3.moveToTheRightBy(100)

p3.printmethod()

 

//定义为结构体常量不能修改内部值


0 0
原创粉丝点击