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
    

      

      

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/huangqiming/p/7521431.html
Copyright © 2011-2022 走看看