Swift学习笔记之----元组与可选值类型
Posted 油醋三椒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习笔记之----元组与可选值类型相关的知识,希望对你有一定的参考价值。
元组与可选值类型
开发者使用元组可以创建出任意数据类型组合的自定义数据类型,而可选值类型是Swift语言的一大特点,通过可选值类型,Swift语言对数值为空进行了严格的把控。
元组
元组是Swift语言中重要数据类型之一,元组允许一些并不相关的类型进行自由组合成为新的集合类型。元组类型十分类似于日常生活中的套餐,现在各种服务业都有许多特色的套餐推出供顾客选择,方便为顾客提供一站式服务。元组提供的就是这样一种编程结构,试想一下,编程中会遇到这样一种情形,一个商品有名字和价格,使用元组可以很好地对这种商品类型模拟,示例如下:
//创建钢笔元组类型,其中由两种类型组成,字符串类型的名称和整数类型的价钱
var pen:(name:String, price:Int) = ("钢笔", 2)
上面代码在创建元组类型的同时也将其中参数的名称进行了指定,即名称参数为name,价格参数为price,开发者可以使用这些参数名称来获取元组中各个参数的值,示例如下:
//获取pen变量名称
var name = pen.name
//获取pen变量价格
var price = pen.price
如果创建元组的时候,没有指定元组中参数的名称,元组会自动为每个参数分配分配下标,下标值将从0开始依次递增,示例如下:
//不指定参数名称的元组
var car:(string, Int) = ("奔驰", 200000)
//通过下标来取得元组中各个组成元素的值
var carName = car.0
var carPrice = car.1
元组实例被创建后,开发者也可以通过指定的变量或者常量来分解它,实例如下:
//不指定参数名称的元组
var car:(string, Int) = ("奔驰", 200000)
//进行元组的分解
var (theName, thePrice) = car
//此时theName变量被赋值为"奔驰"、thePrice变量被赋值为200000
注意:分解后的变量必须与元组中的元素一一对应(个数相等),否则编译器会报错。当不需要获取某个元组实例中的所有元素的值的时候,可以将某些不需要获取的元素使用匿名的方式来接收,示例如下:
//不指定参数名称的元组
var car:(string, Int) = ("奔驰", 200000)
//进行元组的分解
var (theName, _) = car
//此时theName变量被赋值为"奔驰"
在Swift语言中,常常使用符号“”来表示匿名的概念,因此“”也被称为匿名标识符。上面的代码实际上只分解出了元组car中的第一个元素(String类型)。
注意:元组虽然使用起来十分方便,然而其只适用于简单数据的组合,对于结构复杂的数据,要采用结构体或者类来实现。
可选值类型
可选值类型(Optional类型)是Swift语言特有的一种类型。首先,Swift语言是一种十分强调类型安全的语言,开发者在使用到某个变量时,编译器会尽最大可能保证此变量的类型和值的明确性,保证减少编程中的不可控因素。然而在实际编程中,无论任何类型的变量都会遇到值为空的情况,在Objective-C语言中并没有机制来专门监控和管理为空值的变量,程序的运行安全性全部靠开发者手动控制。Swift语言中提供了一种包装的方式来对普通类型进行Optional包装,实现对空值情况的监控。
在Swift语言中,如果使用了一个没有进行赋值的变量,程序是会直接报错停止运行的。而且,通过判断此变量是否为nil这种方法是不可行的,在Swift语言中普通的类型是不允许为nil的,当然也就不可以与nil进行比较运算,这种机制极大地减小了代码地不可控性。如果一个变量逻辑上可能为nil,则需要将其包装为Optional类型,代码如下:
var obj: String?
if obj == nil {
}
以上是关于Swift学习笔记之----元组与可选值类型的主要内容,如果未能解决你的问题,请参考以下文章