我有以下代码:

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()

我得到以下错误:
swift - 没有任何自定义或相关类型要求的协议(protocol)-LMLPHP
关联类型应该来自哪里?
(即使我删除了"\(Self.self)",它仍然会抱怨。)

最佳答案

Equatable具有Self作为关联类型需求,LanguageType间接地派生自Equatable,因此LanguageType具有Self作为关联类型需求。

关于swift - 没有任何自定义或相关类型要求的协议(protocol),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34693732/

10-13 04:04