Требования уровня типа и экземпляра
Различайте требования уровня типа (static) и экземпляра в протоколах и узнайте, как соответствующие типы их реализуют.
«Требования уровня типа и экземпляра» — бесплатный урок Swift Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.
Обзор
Протоколы могут требовать экземплярные или статические члены. Понимание различия помогает проектировать понятные программные интерфейсы.
Требование экземпляра
Требования экземпляра должны быть реализованы каждым экземпляром соответствующего типа.
protocol Drawable {
func draw() -> String
}
struct Circle: Drawable {
func draw() -> String { "Drawing a circle" }
}
print(Circle().draw())Статическое требование
Статические требования удовлетворяются членами уровня типа — свойствами или методами.
protocol Identifiable {
static var tag: String { get }
}
struct User: Identifiable {
static var tag: String { "USR" }
}
print(User.tag)Статические требования в классах
Классы могут реализовывать статические требования с помощью static или class, что позволяет переопределять их.
protocol Describable {
static func describeType() -> String
}
class Animal: Describable {
class func describeType() -> String { "Animal type" }
}
print(Animal.describeType())Смешанный пример
Протоколы часто объединяют статические и экземплярные требования для большей гибкости.
protocol Logger {
static var system: String { get }
func log(_ msg: String)
}
struct ConsoleLogger: Logger {
static let system = "console"
func log(_ msg: String) { print("[\\(Self.system)]", msg) }
}
let logger = ConsoleLogger()
logger.log("hello")Примечания
Примечания:
- Используйте статические члены для информации, общей для типа, или для фабрик.
- Используйте экземплярные члены для поведения отдельных объектов.
- Классы могут использовать
class, чтобы разрешить переопределение статических членов.
Статическое и экземплярное требования
Быстрая проверка: чем отличается статическое требование?
Повторение
Повторение: требования экземпляра применяются к каждому объекту. Статические требования применяются на уровне типа. Для переопределяемых статических членов классы могут использовать class.
Часто задаваемые вопросы
Урок «Требования уровня типа и экземпляра» бесплатный?
Да — полный текст урока «Требования уровня типа и экземпляра» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.
Чему я научусь в уроке «Требования уровня типа и экземпляра»?
Различайте требования уровня типа (static) и экземпляра в протоколах и узнайте, как соответствующие типы их реализуют. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Требования уровня типа и экземпляра»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы протоколов и расширений
- Расширения протоколов и расширения типов
- Требования уровня типа и экземпляра