Swift 个人学习笔记 - 08: 类和结构体

前端之家收集整理的这篇文章主要介绍了Swift 个人学习笔记 - 08: 类和结构体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

文章纯粹是中文《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考

以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。

在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。

本文地址:http://www.jb51.cc/article/p-badkhfnt-d.html


Reference:

原版:The Swift Programming Language
中文版:Swift 3 编程语言 - 类和结构体

Swift - 类和结构体的区别
Swift中的结构体与类的区别(有坑存在)

Swift 中类与结构体的对比

共通点:

  1. 都可以定义属性

  2. 都可以定义成员方法

  3. 都可以定义下标脚本

  4. 都可以定义初始化器

  5. 都可以应用 extension

  6. 都可以应用 protocol

不同点:

  1. 类可以继承

  2. 类型转换允许你在运行检查和解释一个类实例的类型

  3. 类有反初始化方法

  4. 类是引用类型,使用引用计数技术,传递时是引用传递。而结构体是值类型,传递的时候是值传递

定义和初始化

struct SomeStructure {
        ...
    }
    
    class SomeClass {
        ...
    }

Swift 中,对一些定义的约定规则是:

  • 类型:大写开头的驼峰命名法(Upper Camel Case)

  • 方法:小写开头的驼峰命名法(Lower Camel Case)

  • 属性:小写开头的驼峰命名法(Lower Camel Case)

在定义类 / 结构体时,可以加入值的初始化,如:

struct Resolution {
        var width = 0
        var height = 0 
    }
    
    class VideoMode {
        var resolution = Resolution()
        var interlaced = false
        var frameRate = 0.0
        var name: String?
    }

注意上面的 String? 类型,系统自动会赋 nil 值。

创建实例的时候,可以使用 “初始化方法” 来创建一个类或结构体的实例。此外,也可以在开始的时候直接指定属性的值,但这个方式不能用于初始化类。

let someResolution = Resolution()
    let someVideoMode = VideoMode()
    let vga = Resolution(width: 640,height: 480)

具体的时候后面会有 “初始化” 章节(此处应有链接……)

特征运算符

特征运算符这里仅限于类的使用:

  • == != :表示对比两个类的内容是否等价

  • ===!==:表示对比两个类是不是同一个引用(同一个实例)

String,Array,Dictionary

与 Objective-C 不同,在 Swift 中,这三个类型是使用结构体来实现的。不过 Swift 会在程序效率上自行优化,不用太在意。

原文链接:https://www.f2er.com/swift/322024.html

猜你在找的Swift相关文章