Скажем, у меня естьСтруктурированные свойства в протоколе
protocol Theme {
var headerTextColor: UIColor { get }
var footerTextColor: UIColor { get }
var headerImage: UIImage { get }
var footerImage: UIImage { get }
}
struct DarkTheme: Theme {
var headerTextColor: UIColor { return ... }
var footerTextColor: UIColor { return ... }
var headerImage: UIImage { return ... }
var footerImage: UIImage { return ... }
}
struct LightTheme: Theme {
var headerTextColor: UIColor { return ... }
var footerTextColor: UIColor { return ... }
var headerImage: UIImage { return ... }
var footerImage: UIImage { return ... }
}
So экземпляр, который реализует этот свойства протокола доступа к следующим
lightTheme.headerTextColor
darkTheme.footerImage
То, что я хотел бы добиться того, чтобы как-то структурировать эти свойства, чтобы последний фрагмент выглядел бы подобным
lightTheme.color.headerText
darkTheme.image.footer
Зачем использовать протокол здесь вообще? 'Тема 'выглядит точно как структура. Все, что требует темы, будет иметь свойство 'theme', а не кучу суб-свойств. Тогда тривиально выложить это так, как вам нравится. –
@RobNapier Я немного изменил свой вопрос. –
Почему существуют отдельные структуры 'DarkTheme' и' LightTheme'? Мне ничего не мешает установить свойства экземпляра 'LightTheme' для темных цветов и изображений. Как говорит Роб, для этого вам просто нужно использовать одну структуру. – Hamish