新型結構體 Swift之Struct

2021-06-28 15:15:27 字數 1992 閱讀 2756

swift和大部分語言一樣都提供了結構體(struct)。結構體這個概念最早是出現在c語言中,不過在c語言中沒有類(class)

的概念,所以那時結構體也就不會引起混淆,不過在swift中,結構體和類有許多相似的地方,所以也就經常引起混淆。下面就列舉一下swift中結構體和類的相似點:

*   支援定義屬性

*   支援定義方法,這些方法用於實現與類和結構體相關的功能

*   支援定義附屬指令碼,可以通過附屬指令碼語法訪問他們的值

*   支援定義構造器,主要用於進行初始化

*   支援通過擴充套件來增強類和結構體預設實現的功能

*   支援協議(protocol),以便對類和結構體提供標準的功能

既然說到了相同點,也不能迴避他們的差異,差異就是在功能上模擬結構體要強大一點,類支援以下功能:

*   支援繼承,允許乙個類繼承另乙個類的功能

*   支援析構方法

*   支援通過引用計數的方式讓類物件例項被引用多次

//建立乙個結構體:people

struct people

//建立乙個結構體例項

var people1 = people(name:"terry",age:20)

//引用結構體例項

println("name:\(people1.name),age:\(people1.age)")

//輸出的結果是:name:terry,age:20

//注意,在建立結構體例項時必須對其進行初始化

//上邊的**在定義結構體時未對屬性name和age進行初始化

//所以在例項化的同時進行初始化,即「var people1 = people(name:"terry",age:20)」

//或按一下方法進行例項化

struct newpeople

var people2 = newpeople()

people2.name = "terry"

people2.age = 20

println("name:\(people2.name),age:\(people2.age)") //這和上邊的輸出結果是一樣的

第二種建立例項的方法是不是和類特別像,這就是swift中結構體與類相似的地方之一。

上邊說過在swift支援方法,這在之前的語言中是不支援的,這也是swift中結構體的強大之處之一。

struct newpeople1 

func printlnage() //定義乙個方法用於輸出name和age

}var people3 = newpeople1()

people3.name = "terry"

people3.thisyear = 2015

people3.borthyear = 1995

people3.printlnage() //輸出結果為:name is:terry,age is:20

結構體中支援方法,使得結構體的功能變得強大,當然也使得結構體和類容易混淆。

在swift中,結構體實現了許多類的功能,比如構造器、析構器和下標(subscript)等功能,正是通過對結構體功能的擴充,使得結構體的功能增強了很多。

//構造器

struct newpeople2

}var people4 = newpeople2()

println("name is:\(people4.name)")

結構體的很多新功能還沒有一一舉例說明,後續還會繼續補充。。。

swift3 類class與結構體struct

swift 中類和結構體有很多共同點。共同處在於 與結構體相比,類還有如下的附加功能 定義類class class 角色 var 小黃 角色 小黃.安全區角色 id 小黃 money 999 當前角色是小黃,money有999 定義結構體struct struct 座標 var 小黃的座標 座標 小...

swift與結構體

struct resolution 所有結構體都有乙個自動生成的成員逐一構造器,用於初始化新結構體例項中成員的屬性 let vga resolution width 640,height 480 let someresolution resolution println vga.width prin...

swift 類和結構體(之屬性)

值型別和引用型別中可以通過外部訪問的成員 除了方法外 都叫做屬性。swift中到底存在多少種屬性?1.儲存屬性 類和結構體的成員變數或者成員常量都屬於儲存屬性。struct fixedlengthrange 建立結構體物件,並初始化結構體中屬性 var rangeofthreeitems fixed...