1. ホーム
  2. swift

[解決済み] Protocol ... can only be used as generic constraint because it has Self or associated type requirements "とは、どういう意味ですか?

2022-07-28 17:32:15

質問

私は辞書 (実際には ハッシュセット をキーにした辞書を作成しようとしていますが、タイトルのようなエラーが発生します。

プロトコル 'myProtocol' は Self または関連する型の要件を持っているため、一般的な制約としてのみ使用できます。

となっており、頭も尻尾も出ません。

protocol Observing: Hashable { }

var observers = HashSet<Observing>()

どのように解決するのですか?

プロトコル Observing はプロトコルを継承しています。 Hashable を継承し、さらにそのプロトコルを Equatable . プロトコル Equatable には以下の要件があります。

func ==(lhs: Self, rhs: Self) -> Bool

そして、プロトコルに含まれる Self を含むプロトコルは、型制約の中以外では使用できません。

ここで は同じような質問です。