標籤:struct 結構體 swift swift 入華
引子
之前我們在用Int,String等類型的時候,可能沒有仔細研究過,其實這些基本類型與C或者Java不一樣,不是嚴格的“基本類型”,他們其實是經過封裝的結構體。
按住Alt鍵點擊Int類型後,可以看到Int結構體的完整定義
/// A 64-bit signed integer value/// type.struct Int : SignedIntegerType { var value: Builtin.Int64 /// A type that can represent the number of steps between pairs of /// values. typealias Distance = Int /// Create an instance initialized to zero. init() init(_ v: Builtin.Word) /// Create an instance initialized to `value`. init(_ value: Int) ///以下代碼省略}
可以看到,結構體中的成員變數儲存了Int類型的值,同時還提供了包括初始化方法之內的若干個方法。
Swift中的結構體並不複雜,與C語言的結構體相比,除了成員變數,還多了成員方法。使得它更加接近於一個類。個人認為這算是類的一個輕量化實現。下面我通過自己實現一個結構體來加深對其的理解。
定義結構體
struct Person { var name:String var age:Int func introduce(){ println("我叫:\(name),今年\(age)歲") }}
文法與C語言或者OC類似,函數會在之後介紹。不過需要注意的是,Swift中的結構體,在定義成員變數時一定要註明類型。
結構體的使用
定義完結構體之後就可以建立一個Person結構體類型的變數了。
var person = Person(unknown: "kt",age: 20)
這裡的Person(name:age:)方法是結構體根據其成員變數預設產生的構造方法。當然我們也可以自訂它的構造方法。
建立結構體變數後,就可以訪問或修改結構體的成員變數或調用在結構體裡面定義的成員方法。
person.name = "kt"println("person.name = \(person.name)")person.introduce()
運行結果:
person.name = kt我叫:kt,今年20歲
另外要注意一下的是,結構體屬於實值型別,而Swift中的類屬於參考型別。他們在記憶體管理方面會有不同。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Swift入門(七)——結構體(Struct)