我不知道为啥会发生错误[重复]
Posted
技术标签:
【中文标题】我不知道为啥会发生错误[重复]【英文标题】:I don`t know why error happen [duplicate]我不知道为什么会发生错误[重复] 【发布时间】:2016-09-26 06:13:20 【问题描述】:我想让那个 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
【问题讨论】:
【参考方案1】:试试看this answer
您的==
方法不应添加到extension
中,而应全局添加。即使它看起来像是一个static
方法,它仍然应该被声明为一个全局函数。详情可以找here讨论。
现在...如果您已将 Post
声明为 struct
或 class
,那么是的,您可以在 struct/class
中添加 static ==
方法。但是,您已声明 protocol
和 protocol
不能有任何方法。
This answer 向您展示如何让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
然后,证明一切正常:
struct SomePost: Post
var referenceIndex: Int
var likeCount: Int
var likeStatus: Bool
var commentCount: Int
var commentStatus: Bool
let somePost1 = SomePost(referenceIndex: 1, likeCount: 1, likeStatus: true, commentCount: 1, commentStatus: true)
let somePost2 = SomePost(referenceIndex: 2, likeCount: 1, likeStatus: true, commentCount: 1, commentStatus: true)
let somePost3 = SomePost(referenceIndex: 1, likeCount: 1, likeStatus: true, commentCount: 1, commentStatus: true)
somePost1 == somePost2 //false
somePost1 == somePost3 //true
希望对你有帮助
【讨论】:
== swift 3.0 中 Equatable 协议的方法是静态方法。因此,我使用静态方法。 @user3427989 我已经更新了我的问题以使其适用于协议并试图解释为什么它不应该是静态方法(希望我成功了:)) 不客气,祝你好运:)以上是关于我不知道为啥会发生错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Access VBA - If/Else 语句不断给我一个错误,但我不知道为啥[重复]
运行天气应用程序时出现此错误我正在使用 json 和 http 库来获取数据但我不知道为啥会出现此错误