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类型。

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

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

  1. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  2. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

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

    类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文 ...

  4. 【c# 学习笔记】类与结构体的区别

    由于类与结构体在语法和使用上都非常类似,导致我们这些初学者容易混淆.为更好理解,特做以下区分记录: ① 语法上的区别在于,定义类要使用关键词class,而定义结构体则使用关键词struct. ② 结构 ...

  5. Swift学习笔记:类和结构

    一.类和结构的异同 类和结构有一些相似的地方.它们都能够: 1. 定义一些能够赋值的属性: 2. 定义具有功能性的方法 3. 定义下标.使用下标语法 4. 定义初始化方法来设置初始状态 5. 在原实现 ...

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

    与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类 ...

  7. Bash脚本编程学习笔记07:循环结构体

    本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用 ...

  8. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...

  9. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

随机推荐

  1. python学习笔记(7)——集合(set)

    关键词#1.定义:无序不重复元素集, 基本功能包括关系测试和消除重复元素. 2.关键词:类似dict.只有key无value.常用于集合类数学运算. 3.创建 s=set() #入参可以是list.t ...

  2. EF 迁移操作

    一. 模型设计 1.  遵循EF标准,注意表关系配对 2.  数据模型里尽量把必须的属性和说明都写全 3.  EF默认id字段为主键,如果没有,需指定主键 二. 数据迁移 1.  命令运行环境:vis ...

  3. MySQL学习笔记(十二)__连接查询(一)

    连接查询含义:又称多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行发生原因:没有有效的连接条件如何避免:添加有效的连接条件 ...

  4. Jmeter常用的逻辑控制器

    一.ForEach控制器 作用:ForEach Controlle一般和用户自定义变量(User Defined Variables)一起使用,其在用户自定义变量中读取一系列相关的变量.每一个线程下执 ...

  5. Django框架 之基础入门

    django是一款MVT的框架 一.基本过程 1.创建项目:django-admin startproject 项目名称 2.编写配置文件settings.py(数据库配置.时区.后台管理中英文等) ...

  6. MFC获取各窗口指针句柄

    MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决.   HWND hWnd=::FindWindow(NULL,_T("Sphere ...

  7. 【转载】tomcat部署web项目的3中方法

    转载自:http://blog.csdn.net/wjx85840948/article/details/6749964/ 1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的 ...

  8. Apache添加到windows服务和移除Apache的windows服务

    Apache添加到windows服务和移除Apache的windows服务 Apache免安装版将其添加到Windows服务中: 打开cmd控制台,在上面输入"你的Apache安装目录\bi ...

  9. wpf 界面加载 Command

    导入 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" <i:Interaction. ...

  10. BeanFactory的生命周期

    Bean自身的方法:调用Bean构造函数实例化Bean.调用setter设置Bean的属性值及通过<beam=n>的init-method和destory-method所制定的方法. Be ...