swift中物件和結構體的使用

2022-06-14 21:00:11 字數 2253 閱讀 1620

class

student

}let stu = student(name: "

xiao

", age: 18

)print(

"姓名: \(stu.name)

")//

姓名: xia

struct person

}let person = person(name: "xiao", age: 18)

print("姓名: \(person.name)")//姓名: xiao

結構體不需要考慮引用計數,接頭體是值賦值,就是a賦值給b,如果改變b,則a不變,舉例

let person = person(name: "xiao", age: 18)

print("姓名: \(person.name)")//姓名: xiao

var per1 = person;

per1.name = "da"

print("姓名: \(person.name)")//姓名: xiao

屬性的使用,以及注意點

let的注意點

struct person

}let person = person.init(name: "xiaoming", age: 18);

print(person.age!)//18

person.age = 19 //報錯,因為age是let宣告的常量,不能在init之外的地方修改

屬性只有get,沒有set方法設定

struct person

}init(name: string ,age:int)

}

等價於

class person

}var person = person();

= "xiaoming" //報錯,因為沒有set方法

print(person.name)//小明

如果屬性get和set方法都需要,則需要呼叫

class person

set}

}var person = person();

person.name = "xiaoming"

print(person.name)//xiaoming

懶載入

class person

計算屬性

class sample 

set(axis)

}}var result = sample()

print(result.middle)//(150.0, 75.0) 或者這麼寫也沒有問題 print("\(result.middle.0) \(result.middle.1)")

result.middle = (0.0, 10.0)

print(result.no1)

print(result.no2)

繼承和強轉

class person

}class student: person

//override 如果和父類的構造方法一樣,這個必須加,不然報錯

override init(name: string)

}//var stu1 = student(name: "xiaoming", number: "2019091012")

//print(stu1.name!)//輸出小明

////if(stu1 is person)

////let stu2 = stu1 as? person //as?不確定轉成功 as!強致性轉

//print("stu2:\(stu1.name!)")//輸出: stu2:xiaomin

//var person1 = person(name: "huahua")

//let person2 = person1 as? student

//print("person2:\(person2.name)")//報錯,類只能向上轉,不能向下轉

總結一下,既然類和結構體的用法差不多,我們需要什麼怎麼選擇呢

• 封裝少量、簡單的資料的時候;

• 數值傳遞時資料是被拷貝的時候;

• 不需繼承的時候。

Swift 結構體的使用

swift 結構體是構建 所用的一種通用且靈活的構造體。我們可以為結構體定義屬性 常量 變數 和新增方法,從而擴充套件結構體的功能。與 c 和 objective c 不同的是 結構體總是通過被複製的方式在 中傳遞,因此它的值是不可修改的。我們通過關鍵字 struct 來定義結構體 struct n...

Swift中類和結構體

1.類和結構體對比 swift 中類和結構體有很多共同點 與結構體相比,類還有如下的附加功能 2.類和結構體的定義語法 類和結構體有著類似的定義方式。我們通過關鍵字class和struct來分別表示類和結構體,並在一對大括號中定義它們的具體內容,如下 class videomode struct r...

swift中類和結構體的區別

所有的結構體都有乙個自動生成的初始化器,你可以使用它來初始化結構體例項的成員屬性。新例項屬性的初始化值可以通過屬性名稱傳遞到成員初始化器中 let vga resolution width 640,height 480 與結構體不同,類例項不會接收預設的成員初始化器,初始化器的更多細節在初始化章節。...