美文网首页
swift5(9)结构体和类

swift5(9)结构体和类

作者: C_G__ | 来源:发表于2020-02-27 12:04 被阅读0次

感谢作者
https://www.jianshu.com/p/ceedc973be3e

struct Resolution {
    var width = 0
    var height = 0
    
}
class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?
}
        // 结构体和类
        // 我们可以使用与定义常量,变量和函数相同的语法来定义属性和方法,
        // 为我们的结构体和类添加功能
        
        // 比较结构体和类
        // 相同点:
        // 定义属性
        // 定义方法
        // 定义下标
        // 定义初始化方法
        // 可以被扩展 extend
        // 可以遵守协议
        // 不同点:
        // 类可以
        // 继承
        // 类型转换
        // 析构函数(Deinitializers)
        // 引用计数
        
        // 语法定义
        /**
         struct SomeStructure {
         }
         class SomeClass {
         }
         */
        var someResolution = Resolution();
        var someVideoMode = VideoMode();
        
        // 属性访问
        let width1 = someResolution.width;
        let width2 = someVideoMode.resolution.width;
        someResolution.width = 250;
        someVideoMode.resolution.width  = 255;
        
        // 结构体类型的成员初始化方法
        // 所有结构体都有一个自动生成的初始化方法
        var someResolution2 = Resolution(width: 33, height: 77);
        
        // 结构体和枚举是值类型
        // 类似Swift中的整数,浮点数,布尔值,字符串,数组和字典,都是值类型的,
        // 并且这些类型在Swift中的实现都是基于结构体的。故所有结构体和枚举值类型都是值类型。
        let someResolution3 = Resolution(width: 33, height: 77);
        var myResolution = someResolution3;
        
        var currentDirection = CompassPoint.west;
        let rememberedDirection = currentDirection;
        currentDirection.turnNorth();

        print("当前的方向,被改变后 \(currentDirection)");
        //!< 当前的方向,被改变后 north
        print("保存的方向 \(rememberedDirection)");
        //!< 保存的方向 west
        
        // 类是引用类型的
        let tenEighty = VideoMode();
        tenEighty.resolution = someResolution;
        tenEighty.interlaced = true;
        tenEighty.name = "视频模式";
        tenEighty.frameRate = 25.0;
        //赋值给新的实例对象
        let alsoTenEighty = tenEighty;
        alsoTenEighty.frameRate = 30.0;
        print(tenEighty.frameRate,alsoTenEighty.frameRate);
        //!< tenEighty.frameRate:30.0 alsoTenEighty.frameRate:30
        
        // 身份运算符
        
        // 指针
        // Swift中引用某个引用类型的实例作为常量或变量时,类似于C中的指针,
        // 但它不是指向内存中地址的直接指针(不是直接寻址),
        // 并且不需要编写星号*来指示你正在创建一个引用对象。
        // 相反,这些引用的定义与Swift中的任何其他常量或变量一样。

相关文章

  • swift5(9)结构体和类

    感谢作者https://www.jianshu.com/p/ceedc973be3e

  • Swift5复习(一)Swift编译流程、基础语法、流程控制、函

    Swift5复习(一)Swift编译流程、基础语法、流程控制、函数、枚举Swift5复习(二)可选项、结构体、类、...

  • Swift5复习(四)继承、初始化、可选链

    Swift5复习(一)Swift编译流程、基础语法、流程控制、函数、枚举Swift5复习(二)可选项、结构体、类、...

  • Swift5复习(三)属性、方法、下标

    Swift5复习(一)Swift编译流程、基础语法、流程控制、函数、枚举Swift5复习(二)可选项、结构体、类、...

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

  • swift5 基本语法-结构体和类

    在swift标准款中,绝大多数的公开类都是【结构体】,比如Bool、Int、Double、String、Array...

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • 9_类和结构体

    类 和 结构体 是构建代码所用的一种通用且灵活的构造体。可以使用完全相同的语法规则来为类和结构体定义属性(常量、变...

  • #9 swift 类和结构体

    类和结构体很像,其比较不同的一点就是:类是引用类型,结构体是值类型 其共同点: 都可以定义属性来存储值 都可以定义...

  • 9、【Swift】类和结构体

    Swift创建类和结构体时,不需要将声明文件和实现文件分开 一个类的实例通常被称为对象。 结构体和类对比 共同点都...

网友评论

      本文标题:swift5(9)结构体和类

      本文链接:https://www.haomeiwen.com/subject/zdsthhtx.html