Swift入門篇-結構體


前面主要是介紹swift語言中基本類型的用法,今天給大家介紹的是swift的結構體的用法,swift中結構體的用法和其他語言的用法,還有不太一樣,不過您多敲幾遍,就可以理解結構體,結構體在ios開發中是灰常重要的一部分,如果您很好的掌握結構體,在后面ios開發中,會理解的更加清楚。

 

一:結構體聲明

格式:

struct  結構體名 {

}

說明:

1struct  是定義結構體的關鍵字

例子

/*

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 = 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留言發給我,我看到之后第一時間回復您

  最后總結一下。送上一直思維導圖,作為文章的結束

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM