var dict = Dictionary<Int64, ExternalInfo>()
为上述词典创建扩展名,如
extension Dictionary where Key: IntegerLiteralConvertible, Value: ExternalInfo {
func contains(id: Int64) -> Bool {
return self[id] != nil
/* return self[3] != nil */ // No issue
}
mutating func remove(id: Int64) {
removeValueForKey(id)
}
}
它为这两个语句抛出了一些编译器级错误。需要做什么??
不能下标'索引值为'的字典 输入'Int64'
答案 0 :(得分:1)
尝试使用SignedIntegerType
代替IntegerLiteralConvertible
,这是不同整数类型之间更好的通用协议:
extension Dictionary where Key: SignedIntegerType, Value: ExternalInfo {
func contains(id: Int64) -> Bool {
return self[Key(id)] != nil
}
mutating func remove(id: Int64) {
removeValueForKey(Key(id))
}
}