Swift - 資料型別



在任何程式語言中開發程式時,使用變數來儲存資料是必要的。變數只不過是保留的記憶體位置來儲存資料。這意味著當我們建立一個變數時,我們在記憶體中保留了一定數量的空間。

隨後,當希望在變數中儲存資料時,我們可以輸入任何型別的資料,例如字串、字元、寬字元、整數、浮點數、布林值等。根據變數的資料型別,作業系統分配記憶體並決定可以在保留的記憶體中儲存什麼。

Swift 中的內建資料型別

Swift 為程式設計師提供了豐富的內建資料型別,也稱為原始資料型別。它們表示基本值,並由 Swift 語言直接支援。Swift 提供七種內建資料型別,它們是:

資料型別名稱 描述
Int 或 Uint 用於整數。更具體地說,您可以使用 Int32、Int64 定義 32 位或 64 位有符號整數,而使用 UInt32 或 UInt64 定義 32 位或 64 位無符號整數變數。例如,42 和 -23。
Float 用於表示 32 位浮點數和小數位數較少的數字。例如,3.14159、0.1 和 -273.158。
Double 用於表示 64 位浮點數,當浮點值必須非常大時使用。例如,3.14159、0.1 和 -273.158。
Bool 表示布林值,其值為真或假。
String 有序的字元集合。例如,“Hello, World!”
Character 單個字元字串文字。例如,“C”
Optional 表示可以儲存值或不儲存值的變數。

邊界值

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

型別 典型位寬 典型範圍
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 位)

Swift 中的使用者定義資料型別

使用者定義的資料型別允許我們根據需求建立自定義的資料型別。它們提供了更大的靈活性和抽象性。以下是 Swift 支援的一些使用者定義的資料型別:

型別名稱 描述
結構體 (struct) 它們是值型別;這意味著在程式中傳遞時可以複製它們。它們適合表示簡單的資料結構。
它們是引用型別;這意味著它們作為引用傳遞。它們適合複雜的資料模型和物件。
列舉 (Enum) 用於定義一組相關的值。它們適合表示有限集。
協議 它們定義了方法和屬性的藍圖,這對於特定任務或功能塊很有用。

定義資料型別

定義資料型別是一個過程,在這個過程中,我們指定將在變數中儲存什麼型別的資料。眾所周知,Swift 支援兩種型別的資料——內建資料型別和使用者定義的資料型別。因此,我們將看到如何定義內建資料型別:

語法

以下是內建資料型別的語法:

var name : dataType = Value

示例

定義內建資料型別:

var index : Int = 10
var str   : String = "Learn Swift!"
var char  : Character = "S"
var num   : Float = 23.45
var nums  : Double = 32.233434
var value : Bool = true

現在我們將看到如何定義使用者定義的資料型別:

語法

以下是使用者定義資料型別的語法:

struct Student {
   var name: String
   var age: Int
}

var myData = Student(name: "Mona", age: 23)

示例

定義內建使用者定義資料型別:

// Structure	
struct Employee {
   var name: String
   var age: Int
}

// Structure data type
var myData = Employee(name: "Seema", age: 23)

// Class
class Student {
   var name: String
   var age: Int
    
   init(name: String, age: Int) {
      self.name = name
      self.age = age
   }
}

// Class data type
var myInfo = Student(name: "Alice", age: 25)

// Enumeration
enum Rectangle {
   case length, width, breadth
}

// Enum data type
var side: Rectangle = .length

Swift 中的型別安全

Swift 是一種型別安全的語言。這意味著如果程式中的變數期望一個字串,則不能錯誤地傳入整數,因為 Swift 在編譯程式碼時執行型別檢查,如果發現任何型別不匹配,則會顯示錯誤訊息。

但是,這並不意味著必須指定每個變數或常量的型別。Swift 應用型別推斷,如果未顯式指定變數或常量的型別,則會自動確定其型別。

示例

Swift 程式演示型別安全。

var varA = 42

// Here compiler will show an error message because varA 
// variable can only store integer type value
varA = "This is hello"

print(varA)

輸出

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

Swift 中的型別推斷

型別推斷是 Swift 語言的一項特殊功能;它允許編譯器在編譯時自動推斷給定表示式的型別。這意味著不需要在宣告時顯式定義變數的型別,Swift 仍然會提供字串型別安全。

當宣告具有初始值的常量或變數時,它非常有用。

示例

Swift 程式演示型別推斷。

import Foundation

// varA is inferred to be of type Int
var varA = 42
print("Type of varA variable is:", type(of:varA))

// varB is inferred to be of type Double
var varB = 3.14159
print("Type of varB variable is:", type(of:varB))

// varC is also inferred to be of type String
var varC = "TutorialsPoint"
print("Type of varC variable is:", type(of:varC))

輸出

Type of varA variable is: Int
Type of varB variable is: Double
Type of varC variable is: String
廣告