classstudent
}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 personset}
}var person = person();
person.name = "xiaoming"
print(person.name)//xiaoming
懶載入
class person
計算屬性
class sampleset(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 與結構體不同,類例項不會接收預設的成員初始化器,初始化器的更多細節在初始化章節。...