标签:color rip turn oca get blank plain lan name
可选链
原创Blog,转载请注明出处
我的博客地址
http://blog.csdn.net/hello_hwc
可选链提供一个一种可选的方式訪问对象的属性、方法、下标脚本,可选链的返回值一定是可选类型。
长处:替代强制解析(符号!,比如instance.location!.y),由于强制解析nil的值会导致执行期错误
我的心得:对一个链式调用,比方instance.Frame.Origin.x等非常长的调用,对可能是nil的部分加上?
比如,frame和Origin可能为nil。则这么使用instance.Frame?.origin?.x
可选链的特点:中间有一次可选的值为nil,那么整个可选链失效。返回nil
举个简单的样例就明确了
class A{
var varA:B?
}
class B{
var varB:C?
var varBArray = [D]()
subscript(index:Int)->D?{
if(index < varBArray.count){
return varBArray[index]
}
else{
return nil
}
}
}
class C{
var varC:String = "from C"
func printC(){
println(varC)
}
}
class D{
var varD1:Int = 10
var varD2:E = E()
}
class E{
func printE(){
println("from E")
}
}
var instance = A()
if let temp = instance.varA?.varB?.varC{
println(temp)
}
instance.varA?.varB?.printC()
if let temp = instance.varA?[5]?.varD1{ println(temp) }
instance.varA?[5]是用可选链訪问下标脚本。返回D?,然后对返回的D?再通过可选链訪问,搜易訪问的时候是 instance.varA?[5]?.varD1
四、长的可选链调用
instance.varA?[5]?.varD2.printE()
标签:color rip turn oca get blank plain lan name
原文地址:http://www.cnblogs.com/llguanli/p/6780971.html