您好,登錄后才能下訂單哦!
深入淺析Swift 結(jié)構(gòu)體?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
Swift 結(jié)構(gòu)體是構(gòu)建代碼所用的一種通用且靈活的構(gòu)造體。
我們可以為結(jié)構(gòu)體定義屬性(常量、變量)和添加方法,從而擴(kuò)展結(jié)構(gòu)體的功能。
與 C 和 Objective C 不同的是:
結(jié)構(gòu)體總是通過被復(fù)制的方式在代碼中傳遞,因此它的值是不可修改的。
語法
我們通過關(guān)鍵字 struct 來定義結(jié)構(gòu)體:
struct nameStruct { Definition 1 Definition 2 …… Definition N }
實例
我們定義一個名為 MarkStruct 的結(jié)構(gòu)體 ,結(jié)構(gòu)體的屬性為學(xué)生三個科目的分?jǐn)?shù),數(shù)據(jù)類型為 Int:
struct MarkStruct{ var mark1: Int var mark2: Int var mark3: Int }
我們可以通過結(jié)構(gòu)體名來訪問結(jié)構(gòu)體成員。
結(jié)構(gòu)體實例化使用 let 關(guān)鍵字:
import Cocoa struct studentMarks { var mark1 = 100 var mark2 = 78 var mark3 = 98 } let marks = studentMarks() print("Mark1 是 \(marks.mark1)") print("Mark2 是 \(marks.mark2)") print("Mark3 是 \(marks.mark3)")
以上程序執(zhí)行輸出結(jié)果為:
Mark1 是 100
Mark2 是 78
Mark3 是 98
實例中,我們通過結(jié)構(gòu)體名 'studentMarks' 訪問學(xué)生的成績。結(jié)構(gòu)體成員初始化為mark1, mark2, mark3,數(shù)據(jù)類型為整型。
然后我們通過使用 let 關(guān)鍵字將結(jié)構(gòu)體 studentMarks() 實例化并傳遞給 marks。
最后我們就通過 . 號來訪問結(jié)構(gòu)體成員的值。
以下實例化通過結(jié)構(gòu)體實例化時傳值并克隆一個結(jié)構(gòu)體:
import Cocoa struct MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } var aStruct = MarksStruct(mark: 98) var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的結(jié)構(gòu)體! bStruct.mark = 97 print(aStruct.mark) // 98 print(bStruct.mark) // 97
以上程序執(zhí)行輸出結(jié)果為:
98
97
結(jié)構(gòu)體應(yīng)用
在你的代碼中,你可以使用結(jié)構(gòu)體來定義你的自定義數(shù)據(jù)類型。
結(jié)構(gòu)體實例總是通過值傳遞來定義你的自定義數(shù)據(jù)類型。
按照通用的準(zhǔn)則,當(dāng)符合一條或多條以下條件時,請考慮構(gòu)建結(jié)構(gòu)體:
舉例來說,以下情境中適合使用結(jié)構(gòu)體:
結(jié)構(gòu)體實例是通過值傳遞而不是通過引用傳遞。
import Cocoa 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 } } print("優(yōu)異成績:") 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)
以上程序執(zhí)行輸出結(jié)果為:
優(yōu)異成績:
98
96
100
糟糕成績:
34
42
13
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。