Swift 是一種類型安全(type safe )的語言。
類型安全的語言會讓你更清楚代碼中可以使用的值的類型。
如果你的代碼預期一個String,你絕不能誤入一個Int。
因爲 Swift是類型安全的,編譯器編譯你的代碼時會執行類型檢查(type checks),
並標記出任何不匹配的類型錯誤。這使你在開發過程中能夠儘早捕獲並修復錯誤。
當你使用不同類型的值時,類型安全檢查可以幫助你避免錯誤。
當然,這並不意味着你必須爲每一個常量和變量顯示地指定類型。
如果你沒有顯示地指定類型,Swift會進行類型推測(type inference),選擇出適當的類型。
類型推測就是編譯器在編譯代碼時能夠推斷出特定的表達式的類型,主要是根據所提供的值進行推測。
因爲類型推測,所以 Swift比 C 或 Objective - C 需要更少的類型聲明。
雖然常量和變量需要明確類型,但大部分的工作不需要你來做。
類型推測是特別有用的,當你聲明一個常量或變量並初始值的時候,即觸發類型推測。
例如,你給一個常量賦值42,但沒有標明類型,
Swift 可以推測出常量類型是Int,因爲你給它賦的值看起來像一個整數:
var myAppleCount = 42
myAppleCount++
同樣的,如果你不指定一個常量爲浮點類型,Swift 推斷出你想要的是Double類型
var pi = 3.1415926
pi = pi * 1
如果你把整數和浮點數同時用在表達式中,Swift 會推測爲Double 類型:
數字 3 沒有顯式的類型,而表達式中出現了一個浮點數,因此,表達式被推測爲 Double類型
let another = 3 + 0.00222
pi = another
數字類型字面值
整數字面值可以寫爲:
一個十進制數,沒有前綴
一個二進制數,前綴是 0b
一個八進制數,前綴是 0o
一個十六進制數,前綴是 0x
下面的所有整數面值的十進制值都是17:
var decimalInteger = 17
var binaryInteger = 0b10001
var octalInteger = 0o21
var hexadecimalInteger = 0x11
print(decimalInteger)
print(binaryInteger)
print(octalInteger)
print(hexadecimalInteger)
浮點數面值可以是十進制(沒有前綴),或者是十六進制(0x前綴)。
但必須有至少一個十進制數字(或十六進制數)在小數點兩側。
浮點數面值還有一個可選的指數(exponent),在十進制浮點數中通過大寫或者小寫的e來表示,
在十六進制浮點數中通過大寫或者小寫的p來表示。
如果一個十進制數的指數爲exp,那這個數相當於基數和10^exp(10的exp次方)的乘積:
1.25e2 表示 1.25×10^2,等於 125.0
1.25e-2 表示 1.25×10^-2,等於 0.0125。
如果一個十六進制數的指數爲exp,那這個數相當於基數和2^exp(2的exp次方)的乘積:
0xFp2 表示 15×2^2,等於 60.0。
0xFp-2 表示 15×2^-2,等於 3.75。
下面的這些浮點字面量都等於十進制的12.1875
var decimalDouble = 12.1875
var exponentDouble = 1.21875e1
var hexadecimalDouble = 0xC.3p0
print(decimalDouble)
print(exponentDouble)
print(hexadecimalDouble)
數值類面值可以包括額外的格式來增強可讀性。整數和浮點數都可以添加額外的零並且包含下劃線,這不會影響字面量
let paddedDouble = 000123.456
let oneMillion :Double =1_000_000
let justOverOneMillion = 1_000_000.000_000_1
print(paddedDouble)
print(oneMillion)
print(justOverOneMillion)