【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(width:640, height: 480)

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

someVideoMode.resolution.width = 1280

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

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

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

8、类和结构体的差别

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

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

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

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

9、类和结构体的选择

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

  • 结构体的主要目的是用来封装少量相关简单数据值。
  • 有理由估计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
  • 不论什么在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
  • 结构体不须要去继承还有一个已存在类型的属性或者行为。

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

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

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

时间: 2024-08-05 07:05:56

【Swift】学习笔记(八)——类和结构体的相关文章

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以

Swift学习笔记:类和结构

一.类和结构的异同 类和结构有一些相似的地方,它们都可以: 1. 定义一些可以赋值的属性: 2. 定义具有功能性的方法 3. 定义下标,使用下标语法 4. 定义初始化方法来设置初始状态 5. 在原实现方法上的可扩展性 根据协议提供某一特定类别的基本功能 1. 类还有一些结构不具备的特性: 2. 类的继承性 3. 对类实例实时的类型转换 4. 析构一个类的实例使之释放空间 5. 引用计数,一个类实例可以有多个引用 1. 定义语法 struct Name{ let firstName = "&quo

Swift学习】Swift编程之旅---类和结构体(十三)

与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类的实例被称为对象.然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本章中所讨论的大部分功能都可以用在类和结构体上.因此,我们会主要使用实例而不是对象. 比较类和结构体 类和结构体都具有以下特性: 定义用于存储值的属性 定义提供特定能力或功能的方法 定义提供使用下标语法访问值的下标

《The Swift Programming Language 》——类与结构体

Swift 中类和结构体有很多共同点.共同处在于: ?       定义属性用于储存值 ?       定义方法用于提供功能 ?       定义下标用于通过下标语法访问值 ?       定义初始化器用于生成初始化值 ?       通过扩展以增加默认实现的功能 ?       符合协议以对某类提供标准功能 更多信息请参见属性,方法,下标,初始过程,扩展,和协议. 与结构体相比,类还有如下的附加功能: ?       继承允许一个类继承另一个类的特征 ?       类型转换允许在运行时检查和

C++学习笔记(六)--结构体

1.一种自定义的类型--结构体定义: struct 结构体名称 { //成员表列也称作域 还可以包括函数,即函数成员,不过一般结构体类型中不包含,而是放在类中. 类型名 成员名; };这种结构体类型类似于数据库中的记录例: struct Me{ char name[20]; char IDnumber[20]; int age; };此时只是声明了一个Me类型,并未在内存中分配存储单元,只有定义了结构体类型的变量后,才会分配内存,类似int,float这些类型一样. 2.声明结构体变量的方法:

Swift学习笔记八

函数 Swift的函数语法非常独特,也提供了很高的灵活性和可读性.它可以充分表达从简单的无参数C风格函数到复杂的拥有局部变量和外部变量的OC风格的方法.参数可以有默认值,方便函数的调用.Swift中的每个函数都有一个类型,由其参数类型和返回值类型组成,这个类型可以像Swift中的任何其他类型一样被使用,因此,函数被作为参数传递,或者从一个函数返回一个函数等.函数也可以嵌套函数形成嵌套链. 定义和调用函数 定义函数时,可以给它定义一个或多个参数和返回值类型,这些并不是必须的.比如: func sa

Swift学习笔记之--类和对象

通过在 class后接类名称来创建一个类.在类里边声明属性与声明常量或者变量的方法是相同的,唯一的区别的它们在类环境下.同样的,方法和函数的声明也是相同的写法 class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } } 通过在类名字后边添加一对圆括号来创建一个类的实例.使用点语法来访问实例里的属性

swift学习笔记之--类的计算属性

1,Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值,代码如下 class Calcuator{ var a:Int = 1; var b:Int = 1; var sum:Int{ get{ return a + b } set(val){ b = val - a } } } let cal = Calcuator(); print(cal.sum) //2 cal.sum = 5 print(cal.b) //4 2,对于set有简写方法,简写时,新赋的值默认

《从零开始学Swift》学习笔记(Day 25)——类和结构体定义

原创文章,欢迎转载.转载请注明:关东升的博客  Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 {     定义类的成员 } struct 结构体名 {     定义结构体的成员 } 从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中. 下面来看一个示例: class Employee {