【发布时间】:2016-07-02 23:15:10
【问题描述】:
我有一个名为Person 的类和两个包含值和引用类型成员的数组。我想检查这些数组是否相等:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var firstPerson = Person("John")
var secondPerson = Person("James")
var firstArray = ["firstWord", firstPerson, 12]
var secondArray = ["firstWord", secondPerson, 12]
print(firstArray == secondArray)
Swift 编译器如何比较这些数组?
- 它会检查数组的第一个成员 (
"firstWord") 是否相等,然后检查第二个成员(firstPerson和secondPerson)的身份吗? - 如果是这样,我是否需要在以下代码中为
Person类遵守Equatable协议:
顺便问一下,为什么==函数必须在Person类之外声明才能正常工作?
func ==(lhs: Person, rhs: Person) -> Bool {
let areEqual = lhs.name == rhs.name
return areEqual
}
【问题讨论】:
标签: arrays swift pass-by-reference pass-by-value