【发布时间】:2016-06-01 12:52:33
【问题描述】:
我想使用自定义枚举数组作为字典键,但我很难弄清楚如何使数组符合 Hashable。编译器告诉我 [Symbol] 不符合 Hashable。我需要做什么才能编译它?
我弄乱了 Array where Element:Symbol 的扩展,但我不知道如何以这种方式添加协议。
enum Symbol:Hashable, Equatable {
case Dot
case Dash
var value:Int {
get {
switch self {
case .Dot: return 0
case .Dash: return 1
}
}
var hashValue:Int {
return self.value
}
}
func ==(left: Symbol, right: Symbol) -> Bool {
return left.value == right.value
}
struct MorseDictionary {
static let symbolToStringDictionary:[[Symbol]:String] = [
[.Dot, .Dash]:"A"
]
}
【问题讨论】:
-
您的最终目标是什么 - 使用数组作为键有什么好处?
-
想出一个简单的解决方法可能会减少工作量 - 你有一个很好的观点。但作为一个有趣的问题,我仍然想看看我是否可以找到一种方法来使用数组。
标签: ios arrays swift dictionary enums