猫猫学swift3.1(二)可选类型_解包_可选链
猫猫分享,必须精品 原创文章,欢迎转载。转载请注明:翟乃玉的博客 一:可选类型简介
1:可选类型的写法//写法一:
var a1:Optional<String> = nil
a1 = "我是可选类型"
//写法二:
var a2:String? = nil
a2 = "写法二"
2:自己理解其实,从写法上我们很容易看出,可选类型其实是一个泛型集合,这个集合只有一个值,其实我们可以理解为是一个只有一个元素的数组,我们可以用数组的方式来研究可选类型的初始化,赋值等一系列操作. var o1:[String] = [String]() //赋值nil
o1 = ["自己实现可选类型"] //赋值
let o1Value = o1.first //获取到详细数据
var o2:String? = nil//赋值nil
o2 = "自己实现可选类型"//赋值
二: 可选类型的解包场景描述: class Person{
var name:String
var cat:Cat?
init(name:String){
self.name = name
}
}
class Cat{
var name:String?
var toy:Toy?
func eating(){
print("猫在吃东西")
}
}
class Toy{
var name:String?
func playing(who:String) {
print("正在被(who)玩ing...")
}
}
//小玉:
let persion1 = Person(name: "小玉")
let cat1 = Cat()
cat1.name = "贝贝"
persion1.cat = cat1
let toy1 = Toy()
toy1.name = "纸盒"
cat1.toy = toy1
//小明:
let persion2 = Person(name: "小明")
let cat2 = Cat()
persion2.cat = cat2
1:解包如果我们想拿到他们宠物的名字,我们会发现,小明的宠物是无名,这时候我们就需要解包了,因为你拿到的是一个可选类型(可以是有名字的贝贝可以是无名的) 解包方式//方式一: 强制解包!
let catName = persion1.cat?.name
print(catName!)
//方式二:可选绑定
if let catName = catName {
print("可选绑定 ---- "+catName)
}
三: 可选类型可选链可选链介绍swift 中我们在调用函数或者属性的时候,用的是. //让小玉家的贝贝吃饭
persion1.cat?.eating()
//让小玉家的贝贝的玩具被玩
persion1.cat?.toy?.playing(who: "小玉家的贝贝")
// 没有的情况 让小明家的猫的玩具被玩
persion2.cat?.toy?.playing(who: "小明家的猫")
// 并没有打印,因为小明家的猫的玩具是nil
(小明家的猫:没有你让我玩蛇啊) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |