Swift基礎(chǔ)之The Basics003

工欲善其事,必先利其器,對一門語言基礎(chǔ)概念的把握就好像練內(nèi)功,只有練好了,身體上的某些部位達到一定硬度-。-||……才能跟別人過招,哈哈,來吧,那就讓我們硬起來!

數(shù)值型字面量

整數(shù)字面量可以被寫作:

  • 一個十進制數(shù),沒有前綴
  • 一個二進制數(shù),前綴是0b
  • 一個八進制數(shù),前綴是0o
  • 一個十六進制數(shù),前綴是0x

下面的所有整數(shù)字面量的十進制值都是17:

let decimalInteger = 17
let binaryInteger = 0b10001       // 二進制的17
let octalInteger = 0o21           // 八進制的17
let hexadecimalInteger = 0x11     // 十六進制的17```
下面的這些浮點字面量都等于十進制的12.1875:

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0```
就是數(shù)值的格式,沒必要深究,還是十進制用的多……用到的時候再去看吧

數(shù)值型類型轉(zhuǎn)換

通常來講,即使代碼中的整數(shù)常量和變量已知非負(fù),也請使用Int類型。總是使用默認(rèn)的整數(shù)類型可以保證你的整數(shù)常量和變量可以直接被復(fù)用并且可以匹配整數(shù)類字面量的類型推斷。
只有在必要的時候才使用其他整數(shù)類型,比如要處理外部的長度明確的數(shù)據(jù)或者為了優(yōu)化性能、內(nèi)存占用等等。使用顯式指定長度的類型可以及時發(fā)現(xiàn)值溢出并且可以暗示正在處理特殊數(shù)據(jù)。
概括一下:為了世界和平,請用Int……

整數(shù)轉(zhuǎn)換

不同整數(shù)類型的變量和常量可以存儲不同范圍的數(shù)字。Int8類型的常量或者變量可以存儲的數(shù)字范圍是-128127,而UInt8類型的常量或者變量能存儲的數(shù)字范圍是0255。如果數(shù)字超出了常量或者變量可存儲的范圍,編譯的時候會報錯:

let cannotBeNegative: UInt8 = -1
// UInt8 類型不能存儲負(fù)數(shù),所以會報錯
let tooBig: Int8 = Int8.max + 1
// Int8 類型不能存儲超過最大值的數(shù),所以會報錯```
*不同類型的數(shù)值也不能直接進行運算,必須顯式的裝換成同一類型,類似OC的強制轉(zhuǎn)換,寫法如下:*

let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)```

SomeType(ofInitialValue)是調(diào)用 Swift 構(gòu)造器并傳入一個初始值的默認(rèn)方法。在語言內(nèi)部,UInt16有一個構(gòu)造器,可以接受一個UInt8類型的值,所以這個構(gòu)造器可以用現(xiàn)有的UInt8來創(chuàng)建一個新的UInt16。注意,你并不能傳入任意類型的值,只能傳入UInt16內(nèi)部有對應(yīng)構(gòu)造器的值。不過你可以擴展現(xiàn)有的類型來讓它可以接收其他類型的值(包括自定義類型),請參考擴展。

整數(shù)和浮點數(shù)轉(zhuǎn)換

還是那句話,不支持隱式轉(zhuǎn)換,需要注意的是,當(dāng)用 SomeType(ofInitialValue)這種方式來初始化一個新的整數(shù)值時,浮點值會被截斷。也就是說4.75會變成4,-3.9會變成-3。直接切尾巴……好疼額-。-||

注意:
結(jié)合數(shù)字類常量和變量不同于結(jié)合數(shù)字類字面量。字面量3可以直接和字面量0.14159相加,因為數(shù)字字面量本身沒有明確的類型。它們的類型只在編譯器需要求值的時候被推測。

這真是極好的……如果我想算1+0.1等于多少,還得寫成Double(1)+0.1,那我再也就不想寫代碼了

類型別名

類型別名(type aliases)就是給現(xiàn)有類型定義另一個名字。你可以使用typealias關(guān)鍵字來定義類型別名。
為了提升逼格,蘋果果斷把typedef改了個名……我已經(jīng)洞悉了蘋果工程師六維層面展開后的腦洞,啊哈哈哈……
這么寫:

typealias AudioSample = UInt16```
#####布爾值
Swift 有一個基本的布爾(Boolean)類型,叫做Bool。布爾值指邏輯上的值,因為它們只能是真或者假。Swift 有兩個布爾常量,true和false:

let orangesAreOrange = true
let turnipsAreDelicious = false```
需要注意的是:

如果你在需要使用Bool類型的地方使用了非布爾值,Swift 的類型安全機制會報錯

什么是非布爾值呢,比如我們之前喜歡用數(shù)字是否為零來作為判斷條件,這些數(shù)字都是非布爾值
比如這樣做是不對滴:

let i = 1
if i {
    // 這個例子不會通過編譯,會報錯
}```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容