我不知道为啥会发生错误[重复]

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 声明为 structclass,那么是的,您可以在 struct/class 中添加 static == 方法。但是,您已声明 protocolprotocol 不能有任何方法。

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 语句不断给我一个错误,但我不知道为啥[重复]

我不知道为啥使用 boost asio 的代码会导致错误

发生了第一次机会异常......我不知道为啥

运行天气应用程序时出现此错误我正在使用 json 和 http 库来获取数据但我不知道为啥会出现此错误

我的应用程序不断崩溃,大概是因为空对象引用错误,但我不知道为啥

我不知道为啥我会收到分段错误错误