Swift---9.类和结构体

  • 类与结构体(Swift中,类定义后,所有相关的文件都能使用这个类,即我们不需要导入该类)
    • 定义与实例化
    class aClass {
    
    }
    struct AStructure {
    
    }
    var aStru = AStructure()
    var aClas = aClass()
    
    • 属性(与OC相同,使用.可以对类属性进行getter和setter)
    class aClass {
        var name:String?
    }
    var aClas = aClass()
    aClas.name = "class"
    if aClas.name != nil {
        print("the name of aClas is \(aClas.name!)")
    }
    
    • 便利构造器(结构体自带,而类没有)
    struct AStructure {
        var number = 0
        var grade = 0
    }
    var aStru = AStructure(number: 10, grade: 5)
    print("this stu is in grade \(aStru.grade) and his/her number is \(aStru.number)")
    
  • 类和结构体的区别
    • 类属于引用类型
      • 引用类型:Class,闭包属于引用类型,当我们使用引用类型赋值时,引用的是实例本身,而不是副本,也就是我们对新的实例操作,也会影响引用的实例
      class aClass {
          var name:String?
      }
      var aClas = aClass()
      aClas.name = "aclass"
      var bClas = aClas
      bClas.name = "bclass"
      if aClas.name != nil {
          print("the name of aClas is \(aClas.name!)")
      }
      
    • 结构体属于值类型
      • 值类型:String,Int,Float等Swift基本数据类型为值类型,当每次我们使用值类型赋值时,会生成一个拷贝副本,两者之间完全不相干
      struct AStructure {
          var number = 0
          var grade = 0
      }
      var aStru = AStructure(number: 10, grade: 5)
      var bStru = aStru
      bStru.grade = 6
      print("the a grade \(aStru.grade),the b grade \(bStru.grade)")
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容