用「可選鏈」而不用「強制解包」
class
person
class
residence
兩個類「person」和「residence「,現在假如我建立了乙個新的person例項,他的residence屬性因為是可選值,所以被初始化為nil,如下
let john =
person()
//此時john的residence屬性為nil
如果這時使用感嘆號( ! )強制解包numberofroomes會因為residence的值為nil而崩潰。
let aerrorexample = john.residence!
.numberofrooms//執行時會報錯
為此,可選鏈式呼叫提供了另一種訪問numberofrooms的方式,使用( ? )來代替原來的感嘆號( ! )
if
let roomcount = john.residence?
.numberofrooms
else
字尾問號( ? )的作用是在該值不為nil 的情況下訪問,記住上面這種寫法,你可能會經常遇到if let *** = ***這種形式
訪問失敗(值為nil)時則返回
class
person
class
residence
class
room
}//subscript是下標的意思:傳入乙個下標數字,返回需要的那個房間
subscript
(i:int)-
>
room
set}
func
printnumberofrooms()
var address:
address
?}
仔細看下**!其中address類會在下方給出,其他應該都能看懂
class
address
else
iflet buildingnumber = buildingnumber,
let street = street
else
}}
可以看出address類中含有大量的可選值,buildingid提供了乙個用來表示某個建築方法:如果它有名字那直接返回名字,如果它沒名字,那就看看它是否同時擁有buildnumber和street,有則返回乙個拼接的字串沒有則返回nil
仔細看看黃字是怎麼實現的 ! ! !
let john =
person()
iflet roomcount = john.residence?
.numberofrooms
else
我們對john已經進行了初始化所以residence存在了就可以訪問的到 Item2 用而不用
item2 用而不用 prefer to type safety and extensibility weaknesses of printf scanf are the strengths of operator and operator int i rational r r is a ratio...
為什麼用VUE,而不用Jquery了?
在沒有任何前端框架之前,我們寫 只能用原生的js,進行資料的處理,dom的操作,譬如對乙個id 為txtname 的文字框進行賦值,我們是這樣的 document.getelementbyid txtname value 張三 當然這還僅僅是針對通過id獲取dom 現實開發中還有其它的各種操作,當然...
我為什麼用Android 手機而不用 iPhone
最重要的因素肯定是 android大部分的市場份額還是千元幾或者兩千多的機子撐起來的。像我這種學生階段的iphone的 實在太高。android這麼低的入門門檻決定了它的市場份額肯定會很好看。android系統的開源使得玩機的空間很大,熱門機型隨意一搜連rom都能有上千個。有個笑話說android使...