Swift資料型別


在使用任何程式設計語言進行程式設計時,都需要使用不同型別的變數來儲存資訊。 變數只是用於儲存值的保留記憶體位置。 這意味著在建立變數時,會在記憶體中保留一些空間。

您可能希望儲存各種資料型別的資訊,如字串,字元,寬字元,整數,浮點,布林值等。根據變數的資料型別,作業系統分配記憶體並決定可以在保留記憶體中儲存什麼型別的內容。

1. 內建資料型別

Swift 4為程式員提供了豐富的內建和使用者定義的資料型別。 在宣告變數時,最常見的是以下型別的基本資料型別 -

  • IntUInt - 用於整數。 更具體地說,就是可以使用Int32Int64來定義32位或64位有符號整數,而使用UInt32UInt64來定義32位或64位無符號整數變數。 例如,42-23
  • Float - 用於表示32位浮點數和小數點較小的數位。 例如,3.14159,0.1-273.158
  • Double - 用於表示64位浮點數,並在浮點值非常大時使用。 例如,3.14159,0.1-273.158
  • Bool - 用於表示布林值,該值只有兩個:truefalse
  • String - 這是一個有序的字元集合。 例如,"Hello,World!""Yii bai"
  • 字元 - 這是一個單字元字串文字。 例如,'C','Y'
  • Optional - 這表示可以包含值或不包含值的變數。
  • 元組 - 用於在單個複合值中對多個值進行分組。

下面列出了與整數型別相關的幾個要點 -

  • 32位平台上,IntInt32的大小相同。
  • 64位平台上,IntInt64的大小相同。
  • 32位平台上,UIntUInt32的大小相同。
  • 64位平台上,UIntUInt64的大小相同。
  • Int8Int16Int32Int64可用於表示8位,16位,32位和64位有符號整數形式。
  • UInt8UInt16UInt32UInt64可用於表示無符號整數的8位,16位,32位和64位形式。

2. 界限值

下表顯示了變數型別,將值儲存在記憶體中所需的記憶體量,以及可以儲存在此類變數中的最大值和最小值。

型別 典型的位寬 典型範圍
Int8 1位元組 -127 ~ 127
UInt8 1位元組 0 ~ 255
Int32 4位元組 -2147483648 ~ 2147483647
UInt32 4位元組 0 ~ 4294967295
Int64 8位元組 -9223372036854775808 ~ 9223372036854775807
UInt64 8位元組 0 ~ 18446744073709551615
Float 4位元組 1.2E-38 ~ 3.4E+38 (~6 數位)
Double 8位元組 2.3E-308 ~ 1.7E+308 (~15 數位)

3. 型別別名

可以使用typealias為現有型別建立新名稱。 以下是使用typealias定義新型別的簡單語法 -

typealias newname = type

例如,以下行指示編譯器FeetInt的另一個名稱 -

typealias Feet = Int

現在,以下宣告完全合法,並建立一個名為distance的整數變數 -

typealias Feet = Int
var distance: Feet = 100
print(distance)

當使用playground 執行上述程式時,得到以下結果 -

100

4. 型別安全

Swift 4是一種型別安全的語言,這意味著如果程式碼的一部分需要一個String型別,就不能錯誤地將它傳遞給Int。

由於Swift 4是型別安全的,它在編譯程式碼時執行型別檢查,並將任何不匹配的型別標記為錯誤。

var varA = 42
varA = "This is hello"
print(varA)

當編譯上面的程式時,它會產生以下編譯時錯誤。

main.swift:2:8: error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

5.型別推斷

型別推斷使編譯器能夠在編譯程式碼時自動推斷出特定表示式的型別,只需檢查提供的值即可。 Swift 4使用型別推斷來計算出適當的型別,如下所示。

// varA is inferred to be of type Int
var varA = 42
print(varA)

// varB is inferred to be of type Double
var varB = 3.14159
print(varB)

// varC is also inferred to be of type Double
var varC = 3 + 0.14159
print(varC)

當使用playground 執行上述程式時,得到以下結果 -

42
3.14159
3.14159