Swift에서 사용자 정의 프로토콜을 기반으로 하는 Dictionary (실제로 HashSet ) 를 만들려고 하는데 제목에 오류가 있습니다.
프로토콜 ‘myProtocol’은 자체 또는 관련 유형 요구 사항이 있기 때문에 일반 제약 조건으로 만 사용할 수 있습니다.
머리도 꼬리도 만들 수 없습니다.
protocol Observing: Hashable { }
var observers = HashSet<Observing>()
답변
프로토콜 Observing
은 프로토콜 Hashable
에서 상속되며 차례로 프로토콜에서 상속됩니다 Equatable
. 프로토콜 Equatable
에는 다음 요구 사항이 있습니다.
func ==(lhs: Self, rhs: Self) -> Bool
그리고 Self
그 안에 어딘가 를 포함하는 프로토콜 은 유형 제약을 제외하고는 어디에도 사용할 수 없습니다.
여기에 비슷한 질문입니다.
답변
이를 해결하기 위해 제네릭을 사용할 수 있습니다. 이 예를 고려하십시오.
class GenericClass<T: Observing> {
var observers = HashSet<T>()
}