雖然編寫任何編程語言,需要使用不同的變量來存儲各種信息。變量不過是保留的內(nèi)存位置來存儲值。這意味著,當(dāng)創(chuàng)建一個變量,在內(nèi)存中會保留一些空間。
可能喜歡像存儲字符串,字符,寬字符,整數(shù),浮點數(shù),布爾等各種數(shù)據(jù)類型的信息。根據(jù)一個變量的數(shù)據(jù)類型,操作系統(tǒng)分配內(nèi)存,并決定什么可以存儲保留在存儲器。
Swift 為程序員提供內(nèi)置以及用戶定義的種類數(shù)據(jù)類型。 以下是聲明變量使用最頻繁的基本數(shù)據(jù)類型的列表:
Int 或 UInt - 這是用于整數(shù)。更具體地可以使用Int32,Int64來定義32或64位有符號整數(shù),其中作為UInt32或UInt64用來定義32或64位無符號整數(shù)的變量。 For example, 42 and -23.
Float - 這是用來表示一個32位浮點數(shù),一般用于使用較小的小數(shù)點數(shù)字。 例如:3.14159,0.1,和 -273.158。
Double - 這是用來表示一個64位浮點數(shù),用于非常大的浮點值。 例如: 3.14159, 0.1, 和 -273.158.
Bool - 這代表一個布爾值,真或假。
String - 這是有序字符集合。例如, "Hello, World!"
Character - 這是一個單字符字符串。例如, "C"
Optional - 這表示可以容納一個值或沒有任何值的變量。
有下列有關(guān)整數(shù)類型要點:
下表顯示變量類型,需要多少內(nèi)存存儲此值在存儲器中,在這種類型的變量可以存儲最大值和最小值。
| 類型 | 典型的位寬 | 典型范圍 |
|---|---|---|
| Int8 | 1byte | -127 ~ 127 |
| UInt8 | 1byte | 0 ~ 255 |
| Int32 | 4bytes | -2147483648 ~ 2147483647 |
| UInt32 | 4bytes | 0 ~ 4294967295 |
| Int64 | 8bytes | -9223372036854775808 ~ 9223372036854775807 |
| UInt32 | 8bytes | 0 ~ 18446744073709551615 |
| Float | 4bytes | 1.2E-38 to 3.4E+38 (~6 數(shù)字) |
| Double | 8bytes | 2.3E-308 to 1.7E+308 (~15 數(shù)字) |
可以從現(xiàn)有類型使用typealias創(chuàng)建一個新的名稱。以下是使用簡單 typealias 的語法來定義新類型:
typealias newname = type
例如,下面告訴編譯器Feet 是 Int 的另一個名字:
typealias Feet = Int
現(xiàn)在,下面的聲明是完全合法的,并創(chuàng)建一個整型變量為 distance:
import Cocoa typealias Feet = Int var distance: Feet = 100 println(distance)
當(dāng)我們使用 playground 運行上面的程序,到以下結(jié)果。
100
Swift 是一種安全的語言,這意味著,如果代碼的一部分需要一個字符串, 那么不能錯誤地傳遞一個int。
由于 Swift 是類型安全的,當(dāng)類型檢查時它執(zhí)行編譯代碼并標(biāo)志類型不匹配的錯誤。
import Cocoa var varA = 42 varA = "This is hello" println(varA)
當(dāng)我們編譯上面的程序它產(chǎn)生以下編譯時錯誤。
Playground execution failed: error: :6:6: error: cannot assign to 'let' value 'varA' varA = "This is hello"
在它編譯代碼時,類型推斷使編譯器自動推導(dǎo)出特定表達(dá)式的類型, 簡單地通過檢查所提供的值。Swift 采用類型推斷制定出合適的類型如下。
import Cocoa // varA is inferred to be of type Int var varA = 42 println(varA) // varB is inferred to be of type Double var varB = 3.14159 println(varB) // varC is also inferred to be of type Double var varC = 3 + 0.14159 println(varC)
當(dāng)我們使用 playground 運行上面的程序,得到以下結(jié)果。
42 3.14159 3.14159