Swift学习笔记(语法篇)-- Optional类型探索
2017-03-30 09:38
302 查看
可选值类型的概念不存在c和c++中,这是Swift语言特有的数据类型。可选类型用在考虑一个值可能为null的情况。
一:可选类型的创建
可选类型为在一般类型后面加?,表示相对应类型的可选类型,如Int?表示 整型可选类型,Double?表示 浮点可选类型, String?表示 字符串可选类型
可选类型的变量可以被设置为nil,但是不能将nil赋值给非可选类型
Swift中的nil与Objective-C中的nil不同。在Objective-C中,nil是一个指向空对象的指针。但是在Swift中,nil不是一个指针,而是一个确切的代表缺失的值,在Swift中,不只有类的实例能设置为nil,任何相关的值类型也可以设置为nil
二:解析拆箱可选类型
如果一个值被设定为可选类型,在用到它的时候,就需要加以判断这个值是否确实有可用的值,如果有,则取出相应的值,如果没有,则按nil来处理。此过程可以理解为可选类型的拆箱解析操作。
用变量名后面加!号的方法,进行对可选类型的取值操作,但是在进行!符号取值之前,一定要通过判断当前可选类型不等于nil后再进行取值,否则对nil进行!取值操作会触发运行时错误
还可以通过可选类型值绑定进行取值操作,安全方便,苹果官方推荐用法:
这段代码可以解释为这样:如果可选类型变量serverResponseCode包含一个确切的值,设置一个新的常量serverCode,并且将可选类型变量里的值赋给这个常量,然后在if 条件为true的分支里就能直接用这个常量
三: 隐式解析可选类型
声明:
隐式解析可选类型,在系统处理中,任然是可选类型,只不过在每次使用变量的时候,系统会默认进行!解析操作。所以,隐式解析可选类型,适合那些只要第一次赋值,以后每次使用都确保有值的情况。否则,对没有值的变量进行使用,等同于对nil进行!解析操作,会触发运行时错误
四: 可选类型双重运算符
在用可选类型进行赋值时,可以用 ?? 问号来提供一个备用值,当可选类型没有值,也就是等于nil的时候,就用这个备用值进行赋值操作
一:可选类型的创建
可选类型为在一般类型后面加?,表示相对应类型的可选类型,如Int?表示 整型可选类型,Double?表示 浮点可选类型, String?表示 字符串可选类型
var serverResponseCode: Int? = 404 serverResponseCode = nil
可选类型的变量可以被设置为nil,但是不能将nil赋值给非可选类型
Swift中的nil与Objective-C中的nil不同。在Objective-C中,nil是一个指向空对象的指针。但是在Swift中,nil不是一个指针,而是一个确切的代表缺失的值,在Swift中,不只有类的实例能设置为nil,任何相关的值类型也可以设置为nil
二:解析拆箱可选类型
如果一个值被设定为可选类型,在用到它的时候,就需要加以判断这个值是否确实有可用的值,如果有,则取出相应的值,如果没有,则按nil来处理。此过程可以理解为可选类型的拆箱解析操作。
if serverResponseCode != nil { var serverCode = serverResponseCode! }
用变量名后面加!号的方法,进行对可选类型的取值操作,但是在进行!符号取值之前,一定要通过判断当前可选类型不等于nil后再进行取值,否则对nil进行!取值操作会触发运行时错误
还可以通过可选类型值绑定进行取值操作,安全方便,苹果官方推荐用法:
if let serverCode = serverResponseCode { print("server code is \(serverCode)") } else { print("server code is nil") }
这段代码可以解释为这样:如果可选类型变量serverResponseCode包含一个确切的值,设置一个新的常量serverCode,并且将可选类型变量里的值赋给这个常量,然后在if 条件为true的分支里就能直接用这个常量
三: 隐式解析可选类型
声明:
let possibleString: String! print(possibleString) //在没有对隐式可选类型赋值,而直接读取,会触发运行时错误 possibleString = "An implicitly unwrapped optional string" print(possibleString) //第一次赋值后直接当做String类型用,而不用再对这个变量进行解析
隐式解析可选类型,在系统处理中,任然是可选类型,只不过在每次使用变量的时候,系统会默认进行!解析操作。所以,隐式解析可选类型,适合那些只要第一次赋值,以后每次使用都确保有值的情况。否则,对没有值的变量进行使用,等同于对nil进行!解析操作,会触发运行时错误
四: 可选类型双重运算符
let defaultColorName = "red" var userDefinedColorName: String? var colorNameToUse = userDefinedColorName ?? defaultColorName //colorNameToUse的值是"red" userDefinedColorName = "green" colorNameToUse = userDefinedColorName ?? defaultColorName //colorNameToUse的值是"green"
在用可选类型进行赋值时,可以用 ?? 问号来提供一个备用值,当可选类型没有值,也就是等于nil的时候,就用这个备用值进行赋值操作
相关文章推荐
- Swift 学习笔记一 基本数据类型和简单语句语法
- Swift学习笔记基础语法-整数类型
- Swift学习笔记————可选类型(Optional Type)
- 【Objective-C学习笔记】核心语法——点语法、id类型、SEL类型
- Swift学习笔记(七)——高级数据类型之Optionals
- Swift学习笔记基础语法-常量与变量
- Swift学习笔记(六)枚举类型
- 【学习笔记】JavaScript——基本语法与数据类型
- Lua 学习笔记(二)语法、类型、值
- Swift学习笔记(四)——高级数据类型之元组详解
- Swift学习笔记(十五)类型转换和类型嵌套
- Python学习笔记(一):基础语法、变量类型、运算符(快速入门篇)
- Swift学习笔记之数据类型
- Swift学习笔记(2)--元组(Tuples)、Optional(可选值)、(Assertions)断言
- Swift学习05-optional可选类型
- J2SE学习笔记3 — Java基本语法(2)基本数据类型
- swift学习笔记(六)——基础语法的总结
- Swift 学习笔记第一天-变量常量,及数据类型
- 考研之英语学习笔记序列之语法学习(不定冠词a和an的探索)
- Swift学习笔记-基础语法1