在swift中引入了一个新的类型,可选值类型Optionals
,初看Optionals的感觉很陌生,在我第一眼看到它的时候,我就在想...这是什么鬼...但是仔细想想的话,可选值Optionals
类型的引入,为我们也带了便利.
接下来,让我来看看可选值Optionals
是什么吧.
概念: 或者有一个值,或者没有值(nil)
可选值并不是一个确定的类型,可以理解为是对人类基本类型进行包装 之后的类型,在Object-c中不能为一个变量指定一个nil值,指定一个nil值, 会在运行时程序崩溃.
int num = nil; // 看编译器的时候,只会有警告,运行时有异常
有时候,我们声明一个变量,不一定要给它赋值,有人会说,在Object-c中直接声明一个变量就好了
int num; // 运行时会随机分配一个值给变量,如果是先写后读的话,没有任何事情,但是如果是先读后写的话 具体会发生什么,那也只有上帝知道了...不过现在编译器会默认赋值为0, 最终结果是num不为nil
但是要知道的时候,虽然我们没有手动给变量赋值,但是程序在运行时会随机分配一个值给变量
如果我说,我要一个变量没有值为nil
,在后面能给它赋值的话,显然Object-c是不能满足我们的需求的
如果有java语言功底的话,基本类型也是不赋值为null的,但是在基本类型之上进行了一个层包装int : Integer //包装类型 Integer 的话,是可以赋值为null
swift能满足我们的要求,所以swift增加了新的类型,
可选值 Optionals
类型
var name:String? = “ld”
这样声明或许有人说,你这不是有值啊
var name:String?
使用该行代码的话,在playground 显示结果为nil , 会有人说不明显
var name:String? = nil
这下明显了,Object-c 不能直接给值赋值成nil,Swift 也是一样, 但是使用可选值类型就可以完成赋值成nil这项’壮举'了
可选值Optionals
类型 !
与?
var num1:Int? = 10 var num2 = num1! // 此处感叹号为强制解析,若果num1为nil此处必然抛异常
有问号的,表示:我有没有值,不太确定,使用我的时候要小心了 有着惊叹号的表示:兄弟,我有值,尽情的搞我吧... 在使用!来解析?声明的变量的时候需要谨慎..
上面所说的,所声明都是基本类型的,如果是对象类型的话,是可以赋值为nil,并且调用对象方法是不会有任何反应的.
_ 今天本来已经为Optionals已经打好草稿了...本来想着回来直接使用草稿中的内容直接发表了...不过复制着,然后改着...现在发现已经和原来的草稿不大一样了...每写一次都会学到不同的东西!... _