//***********swift学习之19--类--***************************
// Swift 类在Objective C中已经比较熟悉。我们可以为类定义属性(常量、变量)和方法。
// 类定义
// 类的属性可以通过 . 来访问。格式为:实例化类名.属性名:
class Home {
var father:String = ""
var mother:String = ""
var wife:String = ""
var daughter:String = ""
}
let myHome = Home()
myHome.father = "爸爸"
print("myHome 都有谁:\(myHome.father)")
// 恒等运算符
/*
因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例。
为了能够判定两个常量或者变量是否引用同一个类实例,Swift 内建了两个恒等运算符:
*/
// 恒等运算符 === 如果两个常量或者变量引用同一个类实例则返回 true
// 不恒等运算符 !== 如果两个常量或者变量引用不同一个类实例则返回 true
class SampleClass: Equatable {
let myProperty: String
let age: String
init(s: String, a:String) {
myProperty = s
age = a
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty&&lhs.age == rhs.age
}
let spClass1 = SampleClass(s: "Hello",a:"5")
let spClass2 = SampleClass(s: "Hello",a:"5")
if spClass1 === spClass2 {// false
print("引用相同的类实例 \(spClass1)")
}
if spClass1 !== spClass2 {// true
print("引用不相同的类实例 \(spClass2)")
}
let addresses = [SampleClass(s: "Hello",a:"5"),
SampleClass(s: "Hello",a:"7"),
SampleClass(s: "Hello",a:"9")]
let home = SampleClass(s: "Hello",a:"9")
print(addresses[2] == home)
// Prints "false"
print(addresses.contains(home))
// Prints "true"