Swift基础(五):类和结构体
来源:互联网 发布:梁朝伟演技知乎 编辑:程序博客网 时间:2024/05/29 11:29
目录:
类和结构体初始化
类是引用类型
恒等运算符
指针
类和结构体的选择
字符串(String)、数组(Array)、和字典(Dictionary)类型的赋值与复制行为
//类和结构体初始化
struct ResolutionStruct//结构体
{
var width = 0;
var height = 0;
}
class ResolutionClass//类
{
var width = 0;
var height = 0;
}
let vgaStruct = ResolutionStruct(width:640, height:480);//结构体初始化赋值
let vgaClass = ResolutionClass();//类初始化赋值
vgaClass.height = 560;
vgaClass.width = 480;
//类是引用类型
//与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。而是引用已存在的实例。
class VideoMode
{
var interlaced = false;
var frameRate = 0.0;
var name: String?;
}
let tenEighty = VideoMode();
tenEighty.interlaced =true;
tenEighty.name = "1080i";
tenEighty.frameRate =25.0;
let alsoTenEighty =tenEighty;//alsoTenEighty引用tenEighty
alsoTenEighty.frameRate =30.0//改变alsoTenEighty的值,tenEighty的值一样改变
print("The frameRate property of tenEighty is now\(tenEighty.frameRate)");//输出:30.
//恒等运算符:三个等号"==="等价于,不等价于“!==”
var videoMode1 = VideoMode();
var videoMode2 = videoMode1;
if(videoMode1 ===videoMode2)
{
print("等价于");
}
//指针
//类和结构体的选择
按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:
•该数据结构的主要目的是用来封装少量相关简单数据值。
•有理由预计该数据结构的实例在被赋值或传递时,封装的数据将会被拷贝而不是被引用。 •该数据结构中储存的值类型属性,也应该被拷贝,而不是被引用。
•该数据结构不需要去继承另一个既有类型的属性或者行为。
举例来说,以下情境中适合使用结构体:
• 几何形状的大小,封装一个 width属性和 height 属性,两者均为 Double类型。 • 一定范围内的路径,封装一个 start属性和 length 属性,两者均为 Int类型。 • 三维坐标系内一点,封装 x , y和 z 属性,三者均为 Double类型。
在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的
自定义数据构造都应该是类,而非结构体。
//字符串(String)、数组(Array)、和字典(Dictionary)类型的赋值与复制行为
Swift 在幕后只在绝对必要时才执行实际的拷贝。Swift管理所有的值拷贝以确保性能最优化,所以你没必要去回避赋值来保证性能最优化。
- Swift基础(五):类和结构体
- Swift 基础 ---类和结构体
- Swift 基础学习(结构体和类)
- Swift基础 结构体和类
- Swift基础语法: 25 - Swift的类和结构体
- swift基础笔记4-类和结构体
- Swift语法基础:5 - Swift的枚举和结构体
- swift类和结构体(一)
- swift类和结构体(二)
- swift 类和结构体
- Swift结构体和类
- swift 类和结构体
- Swift类和结构体
- Swift-类和结构体
- Swift类和结构体
- Swift-类和结构体
- 【Swift】结构体和类
- Swift 入门基础(结构体/类)
- oracle数据库关键字与语法-工作笔记(随时更新)
- Linux awk 命令
- Android轻量级数据库的建立个基本的操作
- jquery ajax 不能用于下载文件
- zookeeper使用和原理探究(一)
- Swift基础(五):类和结构体
- OpenCV中关于求算图像的直方图(二)
- ProgressBar控件
- SnackBar 笔记(一)基本使用
- Java集合干货系列-集合总体大纲
- 第十五周实践项目阅读程序————5
- 关于Android studio中os文件导入失败的解决方式
- Expectation Maximization Algorithm---opencv2.4.11
- 有的放矢,Liferay进军数字体验市场