2016-06-01 6 views
1

클래스 전용 프로토콜 사용법은 분명합니다. 나는 같은 것을 할 수있는 알고프로토콜 전용 클래스 확장을 만들 수 있습니까?

protocol HashableClass: class, Hashable {} 

을하지만 클래스를 생성 만 확장 가능한 경우 궁금 :

extension Hashable: class {}/extension Hashable where Self is class {} ?? 

두 번째 질문은 : 그것은 (카운터가 아닌 수준의 프로토콜을 만들 수 있습니다 클래스 프로토콜의 일부)?

미리 감사드립니다.

답변

4

모든 클래스는 암시 적으로 AnyObject을 준수, 그래서 당신은

extension Hashable where Self: AnyObject { 

} 

와 "클래스 전용 확장" 정의 할 수 있습니다 ( What's the difference between a protocol extended from AnyObject and a class-only protocol? 비교, 또한 protocol Foo: classprotocol Foo: AnyObject 사이에 차이가없는 것 같습니다.)

프로토콜을 비 클래스 유형으로 제한하는 것은 - 알고있는 한 - 이 불가능합니다.

관련 문제