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...