zoukankan      html  css  js  c++  java
  • 【Swift】学习笔记(八)——类和结构体

    1、类和结构体的定义

    <pre name="code" class="html">struct Resolution {
        var width = 0
        var height = 0
    }
    class VideoMode {
        var resolution = Resolution()
        var interlaced = false
        var frameRate = 0.0
        var name: String?    //值为可选String类型的name
    }

    
    
    类:keywordclass,  struct:结构体


    2、创建类和结构体的实例(其它语言中称实例为对象。)

    let someResolution = Resolution()
    let someVideoMode = VideoMode()

    咦,非常easy啊,怎么没有keywordnew呢。。

     和将函数赋值给变量是一样的啊。是的。

    就这么简单。无需keyword。


    3、结构体有一个逐属性构造器,类木有。

    let vga = Resolution(640, height: 480)


    4、使用. 点 来訪问属性,包含訪问和赋值。

    someVideoMode.resolution.width = 1280


    5、结构体是值类型,类是引用类型。


    6、类的恒等运算符 等价于(===),不等价于(!==)推断两个变量或常量是否引用了同一个实例


    7、指针无需特定的(*)来表示是一个内存地址引用,也不须要特定的符号(->)来訪问。它和訪问属性是一样的 用 (.)点。


    8、类和结构体的差别

    Swift 中类和结构体有非常多共同点。共同处在于:

    • 定义属性用于存储值
    • 定义方法用于提供功能
    • 定义附属脚本用于訪问值
    • 定义构造器用于生成初始化值
    • 通过扩展以添加默认实现的功能
    • 符合协议以对某类提供标准功能

    与结构体相比,类还有例如以下的附加功能:

    • 继承同意一个类继承还有一个类的特征
    • 类型转换同意在执行时检查和解释一个类实例的类型
    • 解构器同意一个类实例释放不论什么其所被分配的资源
    • 引用计数同意对一个类的多次引用

    9、类和结构体的选择

    依照通用的准则。当符合一条或多条下面条件时,请考虑构建结构体:

    • 结构体的主要目的是用来封装少量相关简单数据值。
    • 有理由估计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。

    • 不论什么在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
    • 结构体不须要去继承还有一个已存在类型的属性或者行为。

    合适的结构体候选者包含:

    • 几何形状的大小。封装一个width属性和height属性,两者均为Double类型。
    • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
    • 三维坐标系内一点,封装xyz属性。三者均为Double类型。

    在全部其他案例中,定义一个类。生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自己定义数据构造都应该是类,而非结构体。






  • 相关阅读:
    原来发布到主页是发布到博客园的主页啊,还真不知道
    sysobjects
    blend3破解文件,直接覆盖安装目录源文件即可。
    Microsoft Sql中char和varchar的区别与联系
    SQL脚本创建数据表,并给出主键,外键,唯一键,约束
    asp.net调试方法
    VS2010安装项目的系统必备中添加.NET 2.0
    c#,自定义安装,部署,创建自定义操作,自定义操作,安装验证,数据库,安装授权码,接收输入,判断
    Ext2.2系列(50篇)
    C# 获取24小时制的当前系统时间
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6938564.html
Copyright © 2011-2022 走看看