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
    

      

      

  • 相关阅读:
    Maven与Eclipse整合使用
    Maven学习总结(五)——聚合与继承【如果想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合】
    Maven的核心概念:maven仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的
    使用Maven构建项目---【重点需要掌握:Jetty和Maven两种项目骨架】
    Maven项目构建过程练习
    maven编码gbk的不可映射字符”解决办法
    Maven
    Spring Aop的方法执行简单模型
    2016年看过的书
    ExcelReader
  • 原文地址:https://www.cnblogs.com/huangqiming/p/7521431.html
Copyright © 2011-2022 走看看