前面主要是介紹swift語言中基本類型的用法,今天給你們介紹的是swift的結構體的用法,swift中結構體的用法和其餘語言的用法,還有不太同樣,不過您多敲幾遍,就能夠理解結構體,結構體在ios開發中是灰常重要的一部分,若是您很好的掌握結構體,在後面ios開發中,會理解的更加清楚。ios
一:結構體聲明swift
格式: struct 結構體名 { } 說明: 1: struct 是定義結構體的關鍵字
例子函數
/* 1:struct 是結構體的關鍵字 2:student 結構體名稱 3:student() 建立一個結構體變量 */ struct student { } var stu = student () //student() 表示建立一個結構體變量
二 :結構體聲明 字段學習
定義結構體字段2種方法 struct 結構體名 { 第一種直接定義字段名 而且給字段名賦初始值 var 或 let 字段名 = 初始化值 第二種定義字段名而且指定字段類型 var 或 let 字段名:類型 }
例子spa
struct student { var age = 0 //直接定義一個字段名稱,而且給字段名賦初始值 var name:String // 直接定義一個字符串字段name。 }
三 :結構體聲明 字段的訪問code
一: 建立結構體變量,結構體的字段都必須有初始值,不然會報錯
二: 結構體內部 只有在構造函數(init)中修改字段的值,在結構體內部中方法和屬性內不能直接修改結構體內部字段的值。
三: 在結構體外部,結構體變量,能夠訪問結構體字段,也能夠修改結構體字段的值。
①:構造函數給結構體字段 賦初始值 說明: 1: swift語言中指定結構體構造函數,是init方法 2:init執行方法,在建立結構體變量以前執行
3:在建立結構體題變量的參數必須和構造函數init 參數必須一致。 ②:建立結構體變量賦初始值
在建立結構體變量,而且直接賦值給字段,其中注意點 賦初始值的順序必須和聲明結構體的順序一致。
例子對象
無參構造函數blog
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 = 12 println(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 = p println("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留言發給我,我看到以後第一時間回覆您
最後總結一下。送上一直思惟導圖,做爲文章的結束