我想使Post协议继承Equatable协议和Post协议实现Equatable协议中的方法。
我不知道为什么会发生错误......
请帮助我......我想知道为什么会发生错误..
(== swift 3.0中Equatable协议的方法是静态方法。因此,我使用静态方法。)
protocol Post: Equatable {
var referenceIndex: Int { get set}
var likeCount: Int { get set}
var likeStatus: Bool { get set}
var commentCount: Int { get set}
var commentStatus: Bool { get set}
}
// here. error happen...
extension Post {
public static func ==(lhs: Post, rhs: Post) -> Bool {
return lhs.referenceIndex == rhs.referenceIndex
}
}
答案 0 :(得分:0)
试着查看this answer
您的==
方法不应添加到extension
中,应全局添加。即使它看起来似乎是static
方法,它仍应声明为全局函数。您可以找到有关详细信息here的讨论。
现在......如果您已将Post
声明为struct
或class
,那么您可以在{{1}内添加static ==
方法}}。但是,您已声明struct/class
而protocol
无法使用任何方法。
This answer向您展示如何protocol
实施protocol
。
坚持我们可以实施Equatable
并实施Post protocol
这样的所有内容:
Equatable
然后,要证明事情正在发挥作用:
protocol Post: Equatable {
var referenceIndex: Int { get set}
var likeCount: Int { get set}
var likeStatus: Bool { get set}
var commentCount: Int { get set}
var commentStatus: Bool { get set}
}
func ==<T : Post>(lhs: T, rhs: T) -> Bool {
return lhs.referenceIndex == rhs.referenceIndex
}
希望能帮到你