我创建了一个Foo类,如下所示:
class Foo{
var randomeVar:String?
func saySomething(){
print("Something")
}
}
Run Code Online (Sandbox Code Playgroud)
我现在要比较foo的不同实例,如下所示:
let foo1 = Foo()
let foo2 = Foo()
if foo1 == foo2{
print("Cool")
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,投诉人抱怨“二进制运算符'=='不能应用于两个'Foo'操作数”。有什么问题,我该如何解决?
Foo没有父类具有执行比较的任何属性,因此它不知道如何进行自身比较。
相反,您需要采用Equatable协议,该协议将告诉您包括==
运算符,此时您将定义操作:
您的另一个选择是使用===,它将比较引用,因此传递的唯一方法是两个项目都指向同一实例。
class Foo : Equatable{
var randomeVar:String?
func saySomething(){
print("Something")
}
static func ==(lhs: Foo, rhs: Foo) -> Bool
{
//what makes us equal
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
958 次 |
最近记录: |