swift – 符合Hashable协议?

swift – 符合Hashable协议?,第1张

概述我正在尝试使用键创建一个字典作为我创建的结构,并将值作为Ints数组.但是,我一直收到错误:类型’dateStruct’不符合协议’Hashable’.我很确定我已经实现了必要的方法但由于某种原因它仍然不起作用.这是我的结构与实现的协议: struct dateStruct { var year: Int var month: Int var day: Int v 我正在尝试使用键创建一个字典作为我创建的结构,并将值作为Ints数组.但是,我一直收到错误:类型’dateStruct’不符合协议’Hashable’.我很确定我已经实现了必要的方法但由于某种原因它仍然不起作用.这是我的结构与实现的协议:
struct dateStruct {    var year: Int    var month: Int    var day: Int    var hashValue: Int {        return (year+month+day).hashValue    }    static func == (lhs: dateStruct,rhs: dateStruct) -> Bool {        return lhs.hashValue == rhs.hashValue    }    static func < (lhs: dateStruct,rhs: dateStruct) -> Bool {        if (lhs.year < rhs.year) {            return true        } else if (lhs.year > rhs.year) {            return false        } else {            if (lhs.month < rhs.month) {                return true            } else if (lhs.month > rhs.month) {                return false            } else {                if (lhs.day < rhs.day) {                    return true                } else {                    return false                }            }        }    }}

任何人都可以向我解释为什么我仍然会收到错误?

你错过了声明:
struct dateStruct: Hashable {

BTW – 结构和类名称应以大写字母开头.

你的==函数是错误的.您应该比较这三个属性.

static func == (lhs: dateStruct,rhs: dateStruct) -> Bool {    return lhs.year == rhs.year && lhs.month == rhs.month && lhs.day == rhs.day}

两个不同的值可能具有相同的哈希值.

总结

以上是内存溢出为你收集整理的swift – 符合Hashable协议?全部内容,希望文章能够帮你解决swift – 符合Hashable协议?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1029872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存