Протокол определяет набор требований — включая методы и свойства — которые должен реализовать любой соответствующий ему тип. Сам он не предоставляет реализацию; он только указывает, что должно быть предоставлено.
Любой класс, struct или enum может соответствовать протоколу, указав его после имени типа и реализовав все необходимые члены:
protocol Greetable {
var name: String { get }
func greet() -> String
}
struct Person: Greetable {
var name: String
func greet() -> String {
return "Hello, \(name)!"
}
}
Протоколы — это основа protocol-oriented programming в Swift. Ключевые преимущества:
Swift также позволяет создавать расширения протоколов, которые предоставляют реализации по умолчанию для требований протокола, сокращая дублирование кода между соответствующими типами.
extension Greetable {
func greet() -> String {
return "Hi, I'm \(name)."
}
}
Это означает, что соответствующие типы могут использовать поведение по умолчанию или переопределить его собственной реализацией.
Protocol в Swift предоставляет как чертёж требований, так и реализации по умолчанию для всех своих членов.
Новый — ещё не проверен сообществом
Вы