0Pricing
Swift Academy · Урок

Требования уровня типа и экземпляра

Различайте требования уровня типа (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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы протоколов и расширений
  2. Расширения протоколов и расширения типов
  3. Требования уровня типа и экземпляра
← Назад к Swift Academy