真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Swift2.0(15)類型的補(bǔ)充-創(chuàng)新互聯(lián)

  • 可選鏈

    我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、城東ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的城東網(wǎng)站制作公司

之前介紹過(guò)可選類型,再來(lái)深化一下可選鏈的概念

   如下面的代碼,包含的符合關(guān)系:人—>寵物—>玩具

   class Person {
       var pet:Pet?
   }
   class Pet {
       var name:String
       var favorityToy:Toy?
       init(name:String) {
           self.name = name

       }

       func playToy() {
           print("Pet \(self.name) play toy")

       }

   }
   class Toy {
       var name:String
       init(name:String) {
           self.name = name
       }

   }

   Person的pet屬性可以為nil,Pet的屬性favorityToy可以為nil,這是有現(xiàn)實(shí)意義的

   let p1 = Person()

   print(p1.pet!.name)

   由于p1.pet并沒(méi)有初始化,故為nil,在執(zhí)行p1.pet!解封時(shí),程序?qū)⒈罎ⅲ╟rash)

     可選鏈的格式:串聯(lián)要訪問(wèn)的屬性且在每個(gè)可選屬性后增加?

   print(p1.pet?.favorityToy?.name)   //nil

可選鏈的常見(jiàn)應(yīng)用場(chǎng)景:

   a. 可選鏈訪問(wèn)屬性,如上面的代碼

   b. 可選鏈訪問(wèn)方法,如:

        p1.pet?.playToy()

   ...

  • 類型的轉(zhuǎn)換

先看三個(gè)類:

   class Animal {
       var age:Int = 1
   }
   class Dog : Animal {
       var dogName:String?
   }
   class Cat : Animal {
       var catName:String?

   }

is 關(guān)鍵字 用于進(jìn)行類型檢查,如:

  var p:Animal = Dog()

   if p is Dog {
       print("是")
   }
   else {
       print("不是")

   }

as 用于繼承關(guān)系中的向上轉(zhuǎn)型

   子類實(shí)例引用賦值給父類實(shí)例引用;其實(shí)直接賦值也是允許的

     var d1:Dog = Dog()

     var a1:Animal = d1 as Animal

as!/as? 用于繼承關(guān)系中的向下轉(zhuǎn)型

   父類實(shí)例引用(引用的父類實(shí)例也可能引用子類實(shí)例)賦值給子類實(shí)例引用

   as! 用于轉(zhuǎn)換一定成功的情況(進(jìn)行了強(qiáng)解封),返回的不是可選類型

   as? 用于轉(zhuǎn)換不一定成功的情況,返回的是可選類型

   如:

     var a1:Animal = Dog()

     var d1:Dog? = a1 as? Dog

     print(d1)   //Optional(xxxx.Dog)

     if let d2:Dog = a1 as? Dog {

       print(d2) //xxxx.Dog

     }

AnyObject:表示任意class類型的實(shí)例

   var a:[AnyObject] = [10, 3.14 ,"hello"]

   for var item in a {
       if let a:Int = item as? Int {
           print("整數(shù):\(a)")
       }
       else if let a:Double = item as? Double {
           print("浮點(diǎn):\(a)")
       }
       else if let a:String = item as? String {
           print("字符串:\(a)")
       }

   }

Any:表示任意類型,除了方法類型(函數(shù)類型)

   var a = [Any]()

   a.append(10)
   a.append(3.14)

   a.append("hello")

   for var item in a {
       if let a:Int = item as? Int {
           print("整數(shù):\(a)")
       }
       else if let a:Double = item as? Double {
           print("浮點(diǎn):\(a)")
       }
       else if let a:String = item as? String {
           print("字符串:\(a)")
       }

   }

  • 類型的嵌套

Swift允許在結(jié)構(gòu)體、枚舉、類類型中嵌套定義結(jié)構(gòu)體、枚舉、類類型

這樣做的好處是:方便組織代碼、一定程度上起到了命名空間的作用

     如:

   class A {
       var name:String?
       class C {
           var name:String?
           var age:Int?
       }
   }
   class B {
       var name:String?
       class C {
           var height:Double?
       }

   }

   var p1:A.C = A.C()

   var p2:B.C = B.C()

   被嵌套的類,使用這種 . 方式表示

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)站標(biāo)題:Swift2.0(15)類型的補(bǔ)充-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://weahome.cn/article/didehd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部