Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
protokol [2023/09/18 13:29] oresh.dm |
protokol [2023/09/18 13:51] (текущий) oresh.dm |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | Протокол - набор правил. которым должны соответствовать подписанные под него типы данных. | ||
| + | |||
| Протокол - это абстрактный тип данных. Т.е. это зан7чит не существует явных экземпляров этого типа, а сущетвуют только подписанные под этот тип. | Протокол - это абстрактный тип данных. Т.е. это зан7чит не существует явных экземпляров этого типа, а сущетвуют только подписанные под этот тип. | ||
| НАбор правил декларируется именно в протоколе. | НАбор правил декларируется именно в протоколе. | ||
| - | protocol fullyName{ | + | |
| - | var fullName: String { get } | + | var fullName: String { get } |
| - | } | + | } |
| - | + | struct Person: fullyName { | |
| - | struct Person: fullyName { | + | var fullName: String |
| - | var fullName: String | + | var age: Int |
| - | var age: Int | + | } |
| - | } | + | class Company: fullyName { |
| + | var fullName: String | ||
| - | class Company: fullyName | + | init(fullName: String) |
| - | var fullName: String | + | self.fullName |
| + | } | ||
| + | } | ||
| + | |||
| + | Можно создавать массивы м типом протокола. И пихать туда классы соответсвующими этому протокоу | ||
| - | init(fullName: String) { | + | var clients = [fullyName]() |
| - | self.fullName = fullName | + | |
| - | } | + | Композиция протоколов // |
| - | } | + | |