詳解Swift語言中的類與結構體

2022-09-21 08:54:13 字數 3844 閱讀 8549

在 swift 中類是建立靈活的構建塊。類似於常量,變數和函式,使用者可以定義的類的屬性和方法。swift給我們提供了宣告類,而無需使用者建立介面和實現檔案的功能。swift 允許我們建立類作為單個檔案和外部介面,將預設在類一次初始化來建立。

使用類的好處:

類和結構的共同特徵:

語法複製** **如下:

class classname

定義類複製** **如下:

class student

建立乙個例項的語法:

複製** **如下:

let studrecord = student()

示例class marksstruct

}class studentmarks

let marks = studentmarks()

println("mark is \(marks.mark)")

當我們使用 playground 執行上面的程式,我們得到以下結果

mark is 300

訪問類屬性作為引用型別

類屬性可使用 '.' 語法來訪問。屬性名稱由 "." 分離在例項名後。

複製** **如下:

class marksstruct

}class studentmarks

let marks = studentmarks()

println("mark1 is \(marks.mark1)")

println("mark2 is \(marks.mark2)")

println("mark3 is \(marks.mark3)")

當我們使用 playground 執行上面的程式,得到以下結果

mark1 is 300

mark2 is 400

mark3 is 900

類識別符號

在 swift 引用多個常量和變數指向的單個例項。要了解常量和變數指向乙個特定的類例項標識操作符的使用。 類例項總是通過引用傳遞。在類nsstring,nsarray 和 nsdictionary 例項始終分配作為參考傳遞到現有的例項,而不是使用乙個副本。

複製** **如下:

class sampleclass: equatable

}func ==(lhs: sampleclass, rhs: sampleclass) -> bool

let spclass1 = sampleclass(s: "hello")

let spclass2 = sampleclass(s: "hello")

spclass1 === spclass2 // false

println("\(spclass1)")

spclass1 !== spclass2 // true

println("\(spclass2)")

當我們使用 playground 執行上面的程式,得到以下結果

main.sampleclass

main.sampleclass

結構體swift 提供了利用構造作為結構的靈活的構建塊。 通過利用這些結構的一次可以定義構建體的方法和屬性。

這不同於 c 和 objective c 程式設計:

結構不用要求實現檔案和介面。

結構體使我們能夠建立乙個檔案並自動擴充套件其介面到其它塊。

在結構體中的變數值被複製並傳遞在後續的**,通過返回的舊值的副本使得這些值不能被改變。

語法複製** **如下:

structures are defined with a 'struct' keyword.

struct namestruct

結構體的定義

考慮例如,假設要訪問包含三個科目記錄標記的學生並找出三個科目的總和。在這裡,markstruct用於初始化的結構有三個標記,資料型別為 'int'。

複製** **如下:

struct markstruct

訪問結構體及屬性

結構的成員是由它的結構名訪問。 結構體的例項中由 'let' 關鍵字進行初始化。

複製** **如下:

struct studentmarks

let marks = studentmarks()

println("mark1 is \(marks.mark1)")

println("mark2 is \(marks.mark2)")

println("mark3 is \(marks.mark3)")

當我們使用 playground 執行上面的程式,得到以下結果:

mark1 is 100

mark2 is 200

mark3 is 300

學生成績需要訪問結構名「studentmarks」。結構成員被初始化為 mark1, mark2, mark3 的整數型別值。然後,結構體 studentmarks()傳遞給 'marks' 使用 'let' 關鍵字。 'marks' 將包含結構成員的值。現在通過 '.' 訪問結構的初始名稱的值,並列印它。

複製** **如下:

struct marksstruct

}var astruct = marksstruct(mark: 98)

var bstruct = astruct // astruct and bstruct are two structs with the same value!

bstruct.mark = 97

println(astruct.mark) // 98

println(bstruct.mark) // 97

當我們使用 playground 執行上面的程式,得到以下結果:

9897

結構體最佳使用方式

swift 語言提供功能來定義的結構體作為自定義資料型別,用於構建功能塊。 結構體的例項的值傳遞給定義塊來進一步的操作。

需要有結構:

封裝簡單的資料值

使用「值」而不是「引用」複製封裝資料到它的相關聯屬性

結構體為 「複製」 和 「引用」

在 swift 中結構體是通過其成員的值,而不是它的引用。

複製** **如下:

struct markstruct

}var marks = markstruct(mark1: 98, mark2: 96, mark3:100)

println(marks.mark1)

println(marks.mark2)

println(marks.mark3)

當我們使用 playground 執行上面的程式,得到以下結果:

9896100

另外乙個例項

複製** **如下:

struct markstruct

}var fail = markstruqvgyzct(mark1: 34, mark2: 42, mark3: 13)

println(fail.mark1)

println(fail.mark2)

println(fail.mark3)

當我們使用 playground 執行上面的程式,得到以下結果:

344213

結構體 「markstruct」 需要它的成員首先定義:mark1, mark2 和 mark3. 現在,成員類的變數初始化容納整數值。之後結構成員的副本使用 「self」 關鍵字建立。當結構成員的副本建立結構體塊,其引數標記傳遞給 'marks' 變數,它現在將儲存學生的分數。那麼標記列印為 98, 96, 100。 下一步對於相同的結構成員的另乙個例項命名為 'fail' 用於指向不同的標記相同結構體的成員。那麼標記現在列印為 34, 42, 13. 這清楚地說明了結構會有成員變數的副本,傳入成員到它們即將推出的功能塊。

本文標題: 詳解swift語言中的類與結構體

本文位址: /ruanjian/swift/134117.html

Swift語言中的協議

參考自 protocol 協議 用於統一方法和屬性的名稱,而不實現任何功能。協議能夠被類,列舉,結構體實現,滿足協議要求的類,列舉,結構體被稱為協議的遵守者。協議的語法 protocol 協議名字 協議的使用 在類,結構體,列舉的名稱後加上協議名稱,中間以冒號 分隔即可使用協議 使用多個協議時,各協...

Swift教程 類與結構體

swift 中類於結構體 swift中結構體與類既相似,又有不同。相似點 可以儲存變數 儲存函式 不同點 結構體不支援繼承,類支援 結構體是引用型別,類引用型別 定義 結構體定義 struct somestructure 類定義 class someclass2.例項化變數 let somereso...

Swift 類與結構體(1)

一 類與結構體 在這裡,我們主要 在swift中類與結構體之間的相同與不同,以及在我們平時使用的過程中應該如何選擇使用。1 結構體的特性 2 類特性 類是一種引用型別,他分配在堆區 不連續,第乙個成員的位址和類的首位址不一致 中,也就是說乙個類型別的變數不是直接儲存具體的例項物件,而是儲存當前具體例...