• Swift 类和结构体的简单认识


    类和结构体的共同点:

    • 定义属性用于存储值
    • 定义方法用于提供功能
    • 定义附属脚本用于访问值
    • 通过拓展增加默认实现的功能
    • 定义构造器用于生成初始化值
    • 实现协议以提供某种标准功能
    • 类是引用类型 结构体是值类型

    类相对于结构体多出的附加功能:

    • 继承允许一个类继承另一个类的特征
    • 类型转换允许在运行时检查和解释一个类实例的类型
    • 解构器允许一个类实例释放任何其所被分配的资源
    • 引用计数允许对一个类的多次引用

    类的定义:

    class CustomClass {     // 声明一个类 一般命名都是大写开头 如:String Array
        // 可以在这里声明属性和方法
        var name: String?
        let orderCount = 100
        let isBasic = true
    }
    

    结构体的定义:

    struct CustomStruct {   // 声明一个结构体 命名方式与类一样
        // 可以在这里声明属性和方法
        var width = 100.0
        var height = 50.0
    }
    

    实例化:

    类和结构体的实例化方法很相似,以下代码分别生成结构体和类的实例,调用的都是默认构造器

    let someClass = CustomClass()
    var someStruct = CustomStruct()
    

     与类不同的是结构体默认拥有逐一构造器,可以方便的设置属性的值

    var secondStruct = CustomStruct( 50.0, height: 91.0)
    

    属性操作:

    类和结构体都可以使用.(点语法)进行属性的操作

    someClass.name = "order1"
    print("print someClass name (someClass.name)")
    // 打印 print someClass name Optional("order1") <因为name属性是可空类型 所以会打印出 Optional("order1")>
    
    someStruct.height = 100.0
    print("print someStruct (someStruct.width) and height:(someStruct.height)")
    // 打印出 print someStruct 100.0 and height:100.0 <因为width在声明CustomStruct的时候就已经给了默认值 所以值为100.0>
    

     

    恒等运算符:

    恒等运算符的作用是比较两个变量是否引用的是同一个实例,因为类是引用类型。然而结构体却不需要,因为结构体在每次赋值或者通过传参的时候都会发生拷贝(值类型特性)。"==="代表等价于 "!=="代表不等价

    var secondClass = CustomClass()
    var thirdClass = someClass
    
    if thirdClass !== secondClass {
        print("引用的不是同一个实例")
    }
    
    if someClass === thirdClass {
        print("引用的是一个实例")
    }
    

    这次是对结构体和类的简单认识,之后会记录具体使用的笔记以供备忘

  • 相关阅读:
    for,foreach,$.each()跳出循环的比较
    十大经典排序算法
    沙箱模式以及其使用到的IIFE
    绝对路径和相对路径的区别
    必备的JS调试技巧汇总
    通过.frm表结构和.ibd文件恢复数据
    Jenkins使用QQ邮箱构建邮件提醒服务
    windows常用命令积累
    7.手机屏幕分辨率
    6.移动端App安装包的测试用例
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/5465820.html
Copyright © 2020-2023  润新知