【发布时间】:2016-04-06 18:27:06
【问题描述】:
我正在尝试使用参考比较 (===) 来比较两种协议类型。当我这样做时(Foo 是协议):
Binary operator '===' cannot be applied to two 'Foo' operands
我明白为什么== won't work without conforming to Equatable,但在这种情况下我使用===,这只是一个地址比较。
【问题讨论】:
-
这些是类协议吗?
===仅适用于类类型,不适用于值类型(结构、枚举)。如果协议没有声明为类协议,它就不会工作,因为编译器无法知道你是在比较类而不是结构。 -
@Sulthan 好点。但是不是所有的协议最终都会被一个类所遵循吗?
-
不,因为结构体也可以符合协议
标签: swift