類
在 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 類特性 類是一種引用型別,他分配在堆區 不連續,第乙個成員的位址和類的首位址不一致 中,也就是說乙個類型別的變數不是直接儲存具體的例項物件,而是儲存當前具體例...