zoukankan      html  css  js  c++  java
  • Swift,结构体与类

    1、结构体(小的类就是用struct来写)

    struct arrow{
      var x=0,y=0
    }
    

    2、类(常用)

    class a{
      var a=10
      var b=20
    }
    var b=a()  //实例化
    print(b.a)  //10

    3、类(class)与结构体(struct)的简易不同

    (1)class 不能直接用 x(a:1) ,必需要定义一個 constructor

    struct SRectangle {
      var width = 200
    }
    var sRect = SRectangle()  //实例化
    sRect = SRectangle(300)  //设置里面的值,class这样的话就会报错
    print(sRect.width)   //300
    

    (2)class共用赋值地址,struct赋值地址分开

      1、struct

    var sRect = SRectangle()
    var sRect2 = sRect
    sRect2.width   // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2
    sRect2.width = 500
    sRect.width   // sRect.width 值不受 sRect2 影響還是 200
    

      2、class

    var cRect = CRectangle()
    var cRect2 = cRect
    cRect2.width   // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2
    cRect2.width = 500
    cRect.width   // cRect.width 也改變成了 500

    4、计算属性中的getter(描述属性如何计算及返回语句)

    struct data{
      let name="a"
      var money=0
    }
    class random {
      var my=data()
      var state="carry"
      var work:data{  //继承data的类型
        get{        //不可忽略
          switch state{
            case "carry":
            my.money+=1000
            default:
            my.money+=200
          }
        return my
        }
      }
    }
    var HI=random()
    print(HI.my.money)  //0
    print(HI.work.money)  //1000
    HI.state="" 
    print(HI.work.money)  //1200

    5、计算属性中的setter(有新值(newValue)后如何影响其他的值)

    struct data{
      var name="a"
      var money=0
    }
    class random {
      var my=data()
      var work:data{
        get{      //不可忽略
          return my
        }
        set{
          my=newValue
        }
      }
    }
    var HI=random()
    HI.work=data(name:"hi",money:500)
    print(HI.my.money)  //500

    6、属性监视器,事前响应(willSet),时候响应(didSet)

    class money{
      var tatal=0{
        willSet{
          print("当前(newValue)")  //本身有变量newValue
        }
        didSet{
          print("增加(tatal-oldValue)")  //本身有变量oldValue
        }
      }
    }
    var money1=money()
    money1.tatal=1000  //当前1000 增加1000
    money1.tatal=4000  //当前4000 增加3000
    

      

      

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/huangqiming/p/7521431.html
Copyright © 2011-2022 走看看