18 swift開發iOS 結構體

2021-07-28 08:00:51 字數 2242 閱讀 5348

swift 結構體

swift 結構體是構建**所用的一種通用且靈活的構造體。

我們可以為結構體定義屬性(常量、變數)和新增方法,從而擴充套件結構體的功能。

與 c 和 objective c 不同的是:

結構體不需要包含實現檔案和介面。

結構體允許我們建立乙個單一檔案,且系統會自動生成面向其它**的外部介面。

結構體總是通過被複製的方式在**中傳遞,因此它的值是不可修改的。 語法

我們通過關鍵字 struct 來定義結構體:

struct namestruct 例項

我們定義乙個名為 markstruct 的結構體 ,結構體的屬性為學生三個科目的分數,資料型別為 int:

struct markstruct

我們可以通過結構體名來訪問結構體成員。

結構體例項化使用 let 關鍵字:

import cocoa

struct studentmarks

let marks = studentmarks()

print("mark1 是 \(marks.mark1)")

print("mark2 是 \(marks.mark2)")

print("mark3 是 \(marks.mark3)")

以上程式執行輸出結果為:

mark1 是 100

mark2 是 78

mark3 是 98

例項中,我們通過結構體名 'studentmarks' 訪問學生的成績。結構體成員初始化為mark1, mark2, mark3,資料型別為整型。

然後我們通過使用 let 關鍵字將結構體 studentmarks() 例項化並傳遞給 marks。

最後我們就通過 . 號來訪問結構體成員的值。

以下例項化通過結構體例項化時傳值並轉殖乙個結構體:

import cocoa

struct marksstruct }

var astruct = marksstruct(mark: 98)

var bstruct = astruct // astruct 和 bstruct 是使用相同值的結構體!

bstruct.mark = 97

print(astruct.mark) // 98

print(bstruct.mark) // 97

以上程式執行輸出結果為: 98

97結構體應用

在你的**中,你可以使用結構體來定義你的自定義資料型別。

結構體例項總是通過值傳遞來定義你的自定義資料型別。

按照通用的準則,當符合一條或多條以下條件時,請考慮構建結構體:

結構體的主要目的是用來封裝少量相關簡單資料值。

有理由預計乙個結構體例項在賦值或傳遞時,封裝的資料將會被拷貝而不是被引用。

任何在結構體中儲存的值型別屬性,也將會被拷貝,而不是被引用。

結構體不需要去繼承另乙個已存在型別的屬性或者行為。

舉例來說,以下情境中適合使用結構體:

幾何形狀的大小,封裝乙個width屬性和height屬性,兩者均為double型別。

一定範圍內的路徑,封裝乙個start屬性和length屬性,兩者均為int型別。

三維座標系內一點,封裝x,y和z屬性,三者均為double型別。

結構體例項是通過值傳遞而不是通過引用傳遞。

import cocoa

struct markstruct }

print("優異成績:")

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

print(marks.mark1)

print(marks.mark2)

print(marks.mark3)

print("糟糕成績:")

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

print(fail.mark1)

print(fail.mark2)

print(fail.mark3)

以上程式執行輸出結果為:

優異成績: 98

96100

糟糕成績: 34

42 13

以上例項中我們定義了結構體 markstruct,三個成員屬性:mark1, mark2 和 mark3。結構體內使用成員屬性使用 self 關鍵字。

從例項中我們可以很好的理解到結構體例項是通過值傳遞的。

18 Swift擴充套件 Extensions

擴充套件就是向乙個已有的類 結構體 列舉型別或協議型別新增新功能。而且還包括在沒有許可權獲取原始源 的情況下擴充套件型別的能力 逆向建模 swift中的擴充套件可以 新增計算型屬性和計算型靜態屬性 定義例項方法和型別方法 提供新的構造器 定義下標 定義和使用新的巢狀型別 使乙個已有型別符合某個協議 ...

iOS開發 Swift 總結18 函式

第2部分 故事的高階要素 程式語言swift的高階部分 6 函式 6.1 概念通俗講解 函式主要目的是把一段 塊封裝起來。然後為函式取乙個函式名,想執行這段 時,呼叫這個函式名即可。6.2 定義簡潔介紹以及經驗總結 1 定義的格式 func 函式名舉例,定義函式checkage。func check...

iOS二次發育(swift)結構體

struct location else else else init latitude double,longitude double init?coordinatestring2 string guard let firstelement double coordinatestring2.sub...