那个网站教做馒头,做的好的招投标网站,如何做qq钓鱼网站,搜索引擎优化的工作流程是什么?1、Optional类型的概念
可选类型用来表示“有一个值#xff0c;它等于x或者根本没有值”。当我们遇到Optional类型时#xff0c;就会明显知道这里的值可能为nil#xff0c;我们必须谨慎处理。
2、Optional类型的实现
var optionalInteger: Int?
//或者
var optionalInte…1、Optional类型的概念
可选类型用来表示“有一个值它等于x或者根本没有值”。当我们遇到Optional类型时就会明显知道这里的值可能为nil我们必须谨慎处理。
2、Optional类型的实现
var optionalInteger: Int?
//或者
var optionalInteger: Int!
其中和都是可选类型的语法
3、Optional类型的本质
Optional其实是个枚举enum严格来讲应该是enum和泛型为基础的高阶抽象类型分别是None和Some(T)如果可选类型为nil就会命中None的Case。
enum OptionalT : NilLiteralConvertible, Reflectable { case None case Some(T) //...
}如果命中Some(T)的Case就会得到一个“包装”后的值a wrapped value如果想要拿到真正的value就需要“拆包”否则你会得到的是Optional(value)。
4、Optional类型的运用拆包
可选绑定
可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
可以使用可选绑定来判断Optional是否包含值。
如果包含就自动解包把值赋给一个临时的常量let或者变量var并返回true否则返回false。
基本语法
if let constantName someOptional {statements
}
示例
var myString:String?
myString Hello, Swift!
if let yourString myString {print(myString 值为 - \(yourString))
}else{print(myString 值为 nil)
}强制解包
Optional是对其他类型的一层包装可以将它理解为一个盒子
如果为nil那么它是个空盒子如果不为nil那么盒子里装的是被包装类型的数据如果要从Optional中取出被包装的数据需要使用感叹号进行强制解包如果对值为nil的Optional进行强制解包将会产生运行时错误。
var myString:String?
myString Hello, world!
if myString ! nil {// 强制解析print( myString! )
}else{print(myString 值为 nil)
}可选类型不能直接赋给其它类型如Int?不能直接赋给Int型变量要先解包值为nil的可选类型不能解包
var text: String? abc
print(text) //输出结果为Optional(abc)
print(text!) //输出结果为abc
var a:String
a text! //强制解包
隐式拆包
隐式解包直接在定义时加!
对于会在viewDidLoad进行初始化的变量可以直接定义为var str: String!称为隐式拆包在进行操作的时候也需要添加!进行拆包。
let text:String! abc //text的类型还是Optional
print(text) //输出结果为Optional(abc)
var a:String
a text //隐式类型转换
print(a) //输出结果为abc
!和?的区别
的使用场景
声明Optional值变量在对Optional值操作中用来判断是否能响应后面的操作
的使用场景
强制对Optional值进行拆包声明隐式拆包变量一般用于类中的属性