詳解Swift說話中的類與構造體。本站提示廣大學習愛好者:(詳解Swift說話中的類與構造體)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Swift說話中的類與構造體正文
類
在 Swift 中類是樹立靈巧的構建塊。相似於常量,變量和函數,用戶可以界說的類的屬性和辦法。Swift給我們供給了聲明類,而無需用戶創立接口和完成文件的功效。Swift 許可我們創立類作為單個文件和內部接口,將默許在類一次初始化來創立。
應用類的利益:
類和構造的配合特點:
語法
Class classname {
Definition 1
Definition 2
---
Definition N
}
界說類
class student{
var studname: String
var mark: Int
var mark2: Int
}
創立一個實例的語法:
let studrecord = student()
示例
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
println("Mark is \(marks.mark)")
當我們應用 playground 運轉下面的法式,我們獲得以下成果
Mark is 300
拜訪類屬性作為援用類型
類屬性可以使用 '.' 語法來拜訪。屬性稱號由 "." 分別在實例名後。
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark1 = 300
var mark2 = 400
var mark3 = 900
}
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 {
let myProperty: String
init(s: String) {
myProperty = s
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}
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 {
Definition 1
Definition 2
---
Definition N
}
構造體的界說
斟酌例如,假定要拜訪包括三個科目記載標志的先生並找出三個科目標總和。在這裡,markStruct用於初始化的構造有三個標志,數據類型為 'Int'。
struct MarkStruct{
var mark1: Int
var mark2: Int
var mark3: Int
}
拜訪構造體及屬性
構造的成員是由它的構造名拜訪。 構造體的實例中由 'let' 症結字停止初始化。
struct studentMarks {
var mark1 = 100
var mark2 = 200
var mark3 = 300
}
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 mark: Int
init(mark: Int) {
self.mark = mark
}
}
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 運轉下面的法式,獲得以下成果:
98 97
構造體最好應用方法
Swift 說話供給功效來界說的構造體作為自界說數據類型,用於構立功能塊。 構造體的實例的值傳遞給界說塊來進一步的操作。
須要有構造:
封裝簡略的數據值
應用“值”而不是“援用”復制封裝數據到它的相干聯屬性
構造體為 “復制” 和 “援用”
在 swift 中構造體是經由過程其成員的值,而不是它的援用。
struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
println(marks.mark1)
println(marks.mark2)
println(marks.mark3)
當我們應用 playground 運轉下面的法式,獲得以下成果:
98 96 100
別的一個實例
struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
println(fail.mark1)
println(fail.mark2)
println(fail.mark3)
當我們應用 playground 運轉下面的法式,獲得以下成果:
34 42 13
構造體 “markStruct” 須要它的成員起首界說:mark1, mark2 和 mark3. 如今,成員類的變量初始化包容整數值。以後構造成員的正本應用 “self” 症結字創立。當構造成員的正本創立構造體塊,其參數標志傳遞給 'marks' 變量,它如今將保留先生的分數。那末標志打印為 98, 96, 100。 下一步關於雷同的構造成員的另外一個實例定名為 'fail' 用於指向分歧的標志雷同構造體的成員。那末標志如今打印為 34, 42, 13. 這清晰地解釋了卻構會有成員變量的正本,傳入成員到它們行將推出的功效塊。