2016-06-01 2 views
1

Использование протокола только класса понятное. Я знаю, что могу сделать что-то вроде:Можно ли создать только расширение класса для протокола?

protocol HashableClass: class, Hashable {} 

Но мне интересно, если это возможно, чтобы создать класс только расширение:

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

Второй вопрос: Можно ли создать протоколы не класс (счетчик часть протоколов только класса)?

Заранее спасибо.

ответ

4

Все классы неявно соответствуют AnyObject, так что вы можете определить в «класс-только расширение» с

extension Hashable where Self: AnyObject { 

} 

(Также, кажется, нет никакой разницы между protocol Foo: class и protocol Foo: AnyObject, сравнить What's the difference between a protocol extended from AnyObject and a class-only protocol?.)

Ограничение протокола для неклассовых типов - насколько мне известно - невозможно.

Смежные вопросы