私はSwiftのカスタムプロトコルをキーとする辞書(実際には HashSet )を作成しようとしていますが、タイトルにエラーがあります:
プロトコル「myProtocol」は、Selfまたは関連するタイプの要件があるため、汎用制約としてのみ使用できます
頭も尻尾も作れません.
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
プロトコルObserving
はプロトコルHashable
を継承し、プロトコルEquatable
はプロトコルEquatable
を継承します。プロトコルSelf
には次の要件があります。
func ==(lhs: Self, rhs: Self) -> Bool
また、-VARIABLE--を含むプロトコルは、その内部のどこかで、型制約以外では使用できません。
ここ も同様の質問です。
これを解決するには、ジェネリックを使用できます。この例を考えてみましょう:
class GenericClass<T: Observing> {
var observers = HashSet<T>()
}