1 заметка с тегом
Generic
Протоколы и Универсальные типы в swift
8 февраля 2017, 16:29
Пример:
Создаём протокол Alfa, c методами, которые реализуются через generics в дальнейшем
protocol Alfa { associatedtype Item func printItem(from item: Item) func make() -> Item }
Пишем реализацию класса Betta, который поддерживает протокол Alfa
protocol Initalizable { init() } class Betta<Item: Initalizable>: Alfa { func printItem(from item: Item) { print("\(item)") } func make() -> Item { return Item() } }
class Window: Initalizable { required init() { } var isOpened = false convenience init(_ opened: Bool) { self.init() isOpened = opened } } class CellWin: Initalizable { var name: String = "" required init() { } }
Само использование и конфигурация класса Betta совершенно различными классами, но с общими протоколами
let item = Betta<CellWin>() item.printItem(from: CellWin() ) let factory = Betta<Window>() factory.printItem(from: Window(true)) let window = factory.make() print("\(window)")