Видеокурсы по изучению языка программирования Swift. Подробнее

Коллекции типов протокола

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Протоколы могут использовать в качестве типов, которые хранятся в таких коллекциях как массивы или словари, что упоминалось ранее в Протоколы как типы.

Пример ниже создает массив из элементов типа TextRepresentable:

let things: [TextRepresentable] = [game, d12, simonTheHamster]

Теперь мы можем перебирать элементы массива и выводить текстовое отображение каждого из них:

for thing in things {
    print(thing.textualDescription)
}
// Игра Змеи и Лестницы с полем в 25 клеток
// Игральная кость с 12 гранями
// Хомяка назвали Фруша

Обратите внимание, что константа thing является типом TextRepresentable. Она не является типом Dice, или DiceGame, или Hamster, даже в том случае, если базовый тип является одним из них. Тем не менее из-за того, что она типа TextRepresentable, а все что имеет тип TextRepresentable, имеет метод textualDescription, что значит, что можно безопасно вызывать thing.textualDescription каждую итерацию цикла.

 

Swift: 
4.0