我有以下代码:
protocol LanguageType: Hashable {
var description: String { get }
}
extension LanguageType {
var description: String { return "(Self.self)" }
var hashValue: Int { return "(Self.self)".hashValue }
}
func ==<T: LanguageType, U: LanguageType>(left: T, right: U) -> Bool {
return left.hashValue == right.hashValue
}
struct English: LanguageType { }
当我执行以下操作时:
let english: LanguageType = English()
我收到以下错误:
应该来自哪个相关类型?
(即使我删除了"\(Self.self)"
,它仍会抱怨。)
答案 0 :(得分:2)
Equatable
将Self
作为关联类型要求,LanguageType
间接来自Equatable
,因此LanguageType
将Self
作为关联类型要求。