У меня есть два протокола (Archivable
и Serializable
) и класс (Model
), который несколько раз подклассифицирован. Многие подклассы реализуют либо Archivable
, либо Serializable
(или оба). Я хотел бы определить функцию для всех дочерних элементов Model
, которые реализуют как Archivable
, так и Serializable
. Обе эти работы:
extension Serializable where Self: Model {
func fetch() { ... }
}
или
extension Serializable where Self: Archivable {
func fetch() { ... }
}
Однако я не могу понять, как расширить, где требуются оба протокола. Есть ли другие возможности, кроме создания третьего протокола, который соответствует первым двум?