????Swfit是一門類型安全的語(yǔ)言,類型安全的語(yǔ)言鼓勵(lì)你清楚的了解編程過(guò)程中變量的類型,如果你的代碼需要的是一個(gè)String類型的值,你無(wú)法傳入一個(gè)Int類型的值,因?yàn)槟鞘清e(cuò)誤的。
? ? 因?yàn)镾wift是類型安全的,它提供了類型檢查,在編譯過(guò)程中將會(huì)如有類型不匹配的情況將會(huì)標(biāo)記為錯(cuò)誤。這將會(huì)是你帶開(kāi)發(fā)過(guò)程中盡量早的發(fā)現(xiàn)和解決你發(fā)現(xiàn)的錯(cuò)誤信峻。
? ? 類型檢查幫助你使用不同的類型的值的時(shí)候避免出現(xiàn)錯(cuò)誤。當(dāng)然章蚣,這也并不是意味著你需要給你生命的每一個(gè)變量或者常量指定類型站欺。如果你沒(méi)有制定值的類型,類型推斷會(huì)幫助你推斷出合適的類型纤垂。類型推斷使編譯器在編譯代碼時(shí)可以通過(guò)檢查你提供的值去自動(dòng)的推斷特定表達(dá)式的類型矾策。
? ? 因?yàn)轭愋屯茢嗟拇嬖冢绕餭和oc峭沦,Swift需要更少的類型聲明贾虽。常量和變量依然是需要顯示的聲明類型的,但是類型推斷依舊可以為你做大多數(shù)的指定類型的工作吼鱼。
? ? 當(dāng)你聲明常量或者變量且提供了初始化的值的時(shí)候蓬豁,類型推斷就非常有用了。這種情況通常是在聲明常量或者變量的同時(shí)使用字面量進(jìn)行了初始化菇肃。
? ? 比如地粪,你使用字面量42初始化了一個(gè)新的常量但是沒(méi)有指定類型,Swift會(huì)推斷你希望這個(gè)常量是Int類型琐谤,因?yàn)槟闶褂昧艘粋€(gè)看起來(lái)像整型的數(shù)字初始化了常量:
? ??let meaningOfLife = 42??// meaningOfLife 被推斷為類型 Int
? ? 同樣的蟆技,如果你不指定一個(gè)浮點(diǎn)數(shù)的字面量的類型,Swift會(huì)推斷你希望創(chuàng)建一個(gè)Double類型
? ??let pi = 3.14159 ?// pi?被推斷為類型?Double
? ?在推斷一個(gè)浮點(diǎn)數(shù)字面量的時(shí)候斗忌,Swift總是選擇Double而不是Float质礼。
? ? 如果你在一個(gè)表達(dá)式里面組合了整型和浮點(diǎn)數(shù)的字面量,Swift會(huì)根據(jù)上下文推斷出Double類型:
? ???let anotherPi = 3 + 0.14159 ?// anotherPi 被推斷為類型 Double”
? ? 上面的例子中的字面量3自己并沒(méi)有明確的類型织阳,所以根據(jù)加法運(yùn)算符的另外一部分眶蕉,也就是浮點(diǎn)數(shù)字面量0.14159,推斷出了適合當(dāng)前上下文的類型Double唧躲。
? ??