我有以下代码:
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)"
,它仍然会抱怨。) 最佳答案
Equatable
具有Self
作为关联类型需求,LanguageType
间接地派生自Equatable
,因此LanguageType
具有Self
作为关联类型需求。
关于swift - 没有任何自定义或相关类型要求的协议(protocol),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34693732/