標籤:style blog http color os 2014
前面主要是介紹swift語言中基本類型的用法,今天給大家介紹的是swift的結構體的用法,swift中結構體的用法和其他語言的用法,還有不太一樣,不過您多敲幾遍,就可以理解結構體,結構體在ios開發中是灰常重要的一部分,如果您很好的掌握結構體,在後面ios開發中,會理解的更加清楚。
一:結構體聲明
格式:struct 結構體名 {}說明:1: struct 是定義結構體的關鍵字
例子
/*1:struct 是結構體的關鍵字2:student 結構體名稱3:student() 建立一個結構體變數*/struct student { }var stu = student () //student() 表示建立一個結構體變數
二 :結構體聲明 欄位
定義結構體欄位2種方法 struct 結構體名 { 第一種直接定義欄位名 並且給欄位名賦初始值 var 或 let 欄位名 = 初始化值 第二種定義欄位名並且指定欄位類型 var 或 let 欄位名:類型}
例子
struct student { var age = 0 //直接定義一個欄位名稱,並且給欄位名賦初始值 var name:String // 直接定義一個字串欄位name。 }
三 :結構體聲明 欄位的訪問
一: 建立結構體變數,結構體的欄位都必須有初始值,否則會報錯
二: 結構體內部 只有在建構函式(init)中修改欄位的值,在結構體內部中方法和屬性內不能直接修改結構體內部欄位的值。
三: 在結構體外部,結構體變數,可以訪問結構體欄位,也可以修改結構體欄位的值。
①:建構函式給結構體欄位 賦初始值 說明: 1: swift語言中指定結構體建構函式,是init方法 2:init執行方法,在建立結構體變數之前執行
3:在建立結構體題變數的參數必須和建構函式init 參數必須一致。②:建立結構體變數賦初始值
在建立結構體變數,並且直接賦值給欄位,其中注意點 賦初始值的順序必須和聲明結構體的順序一致。
例子
無參建構函式
struct student { var age = 0 //直接定義一個欄位名稱,並且賦初始值 var name:String // 直接定義一個字串變數。 //定義 無參數建構函式 init() { name = "zs" age = 1 } }
/*
1: student () 建立一個結構體變數 ,系統會自動調用建構函式init()
*/
var stu = student ()
println("name=\(stu.name),age=\(stu.age)") 運行結果 name=zs,age=1
有參數建構函式
struct student { var age = 0 //直接定義一個欄位名稱,並且賦初始值 var name:String // 直接定義一個字串變數。 //定義 有參數建構函式 init(Name:String,Age:Int) { self.name = Name //self 指的是當前結構體變數 self.name 當前結構體的變數的欄位 self.age = Age } }/*
1;student (Name:"ls",Age:12) 建立結構體變數 系統會調動建構函式,並且建立結構體的參數於建構函式參數一致
2:student (Name:"ls",Age:12) 後面跟著的參數名稱必須於建構函式參數變數名相同
*/var stu = student (Name:"ls",Age:12) //因為建構函式有2個參數,所對應建立結構體的變數的參數要一致println("name=\(stu.name),age=\(stu.age)")運行結構name=ls,age=12
有參數建構函式 參數變數加 _ 用法
1: 建立結構體的對象中對應參數必須和建構函式對應的參數一致2: 如果建構函式中參數變數前加 _ 其對應建立對象的參數,不需要變數名
struct Point{ var x = 0.0 var y = 0.0 init(_ x :Double ,_ y :Double){ self.x = x self.y = y } }/*1: init(_ x :Double ,_ y :Double) 建構函式中對應變數前面加 _ 其對應建立對象後面不需要變數名。*/var p = Point(10.0,11.0)println("x=\(p.x) y=\(p.y)")
建立結構體變數賦初始值
struct student { var age = 0 //直接定義一個欄位名稱,並且賦初始值 var name:String? // 直接定義一個字串變數。 }/*------建立結構體變數賦初始值var stu = student(age:12,name:"甘超波")說明: 1:建立一個結構體變數stu,其中欄位 age 的值為12 name 的值為 "甘超波" 注意點: student()括弧後面跟著參數 必須和定義結構體的欄位的順序一致 錯誤寫法 var stu1 = student(name:"甘超波",age:12) 因為 建立結構體的變數中初始化欄位的順序和定義結構體聲明欄位的順序不一致*/var stu = student(age:12,name:"甘超波")println("name=\(stu.name),age=\(stu.age)")運行結果name=甘超波,age=12
結構體 方法
1:結構體中可以直接儲存方法 注意點: 結構體中方法不能直接修改欄位的值,否則會報錯
例子
struct student { var age = 0 //直接定義一個欄位名稱,並且賦初始值 //定義結構體方法 func GetAge() ->Int{ return age } }/*注意點: 結構體中方法不能直接修改欄位的值,否則會報錯*/var stu = student()stu.age = 12println(stu.age)運行結果12
結構體屬性
屬性 主要是get set方法
例子
struct Point{ var x = 0.0 var y = 0.0}struct CPoint { var p = Point() //聲明屬性 ,get set方法 var GPoint :Point{ get{ return p } set(newPoint){ p.x = newPoint.x p.y = newPoint.y } }}var p = Point(x:10.0,y:11.0)var CP = CPoint()CP.GPoint = pprintln("x=\(CP.GPoint.x),y=\(CP.GPoint.y)")運行結果x=10.0,y=11.0
系統提供常見結構體 有 Bool Int Float Double String 等
注意點:SWift語言中 String 是結構體類型
結構體值傳遞的時候都是
後面的文章,我回陸續把我學習到swift語言的知識寫出來形成一個系列。由於是新語言,難免有不足,歡迎給我提出意見。也可以加我QQ 1436051108一起討論,如果您有什麼問題,也可以直接在QQ留言發給我,我看到之後第一時間回複您
最後總結一下。送上一直思維導圖,作為文章的結束