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 {
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值