类型不符合未定义的协议

Phe*_*ter 4 ios swift xcode6

在Xcode 6 Beta 2中,我编写了以下类:

class Item : Printable, Hashable {
    var description:String {
     return "..."
    }
    var hashValue:Int {
        return 1
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,指出类型'Item'不符合协议'Equatable',即使我还没有尝试实现一个名为'Equatable'的协议.有没有人见过这样的行为?任何解决方案或解决方法?谢谢!

Ale*_*yne 5

根据Hashable文档:(看到页面最底部)

符合Hashable协议的类型必须提供名为hashValue的gettable Int属性,并且还必须提供"is equal"运算符(==)的实现.

并且根据您通过定义操作符重载函数来执行此操作Equatable文档,==其中所需的类型位于运算符的每一侧.

func == (lhs: MyStruct, rhs: MyStruct) -> Bool {
    return lhs.name == rhs.name
}
Run Code Online (Sandbox Code Playgroud)

这意味着你的代码是这样的:

class Item : Printable, Hashable {
    var description:String {
        return "..."
    }
    var hashValue:Int {
        return 1
    }
}

func == (lhs: Item, rhs: Item) -> Bool {
    return lhs.hashValue == rhs.hashValue
}

// Testing...
Item() == Item() //-> true
Run Code Online (Sandbox Code Playgroud)

当然,假设hashValue你认为它们会使它们等同.