Повышение производительности компилятора без особых усилий

Расширения чрезвычайно важны в Swift. Вы также можете добавить «я» к расширению. Что это значит?

Сложность: Новичок | Легко| Нормальный | Испытывающий

Предпосылки:

  • Уметь создавать Hello, World! iOS-приложение (гид ЗДЕСЬ)
  • Знание классов, структур и перечислений (гайд ЗДЕСЬ)
  • Некоторое знание расширений было бы полезно (руководство ЗДЕСЬ)

Терминология

класс: объект, определенный в Swift, с использованием семантики передачи по ссылке (ссылка)

расширения: расширения добавляют новые функции в класс, структуру, перечисление или протокол.

экземпляр: пример или единичное появление чего-либо

mutating: ключевое слово, которое можно добавить к функции, позволяющей изменять переменную.

self: свойство экземпляра, которое ссылается на себя

Что такое расширение?

Мы можем расширить aclass, struct, enum или aprotocol.

extension TargetType {
    // functionality that will be added to the type
}

мы можем добавить extension к существующим типам, которые используются в Swift.

Реальный пример

В этом уроке мы собираемся добавить функцию increment к Int в Swift. Используя extension.

Добавление функциональности к целым числам

Возможно, вы хотите добавить

extension Int {
    var increment: Int {
         return self + 1
    }
}

который называется

3.increment

Сейчас здесь происходит несколько интересных вещей. Давайте рассмотрим их по очереди.

increment — это вычисляемое свойство, доступное только для чтения, которое вычисляет приращение заданного целого числа.

self относится к целому числу, которое мы использовали с расширением. В данном случае это 3.

Результаты: на самом деле мы не меняем исходное значение Integer.

Мы использовали self правильно, но функция не мутирует

Мы можем увидеть это, создав переменную для использования этой функции.

var myNum = 3
myNum.increment // 4
print (myNum) // 3

Редактирование функциональности расширения

extension Int {
    var increment: Int {
         return self + 1
    }
    mutating func incrementVal() {
         self = self + 1
    }
}

Теперь мы можем вызвать функцию mutating, а это значит, что мы наконец-то можем реализовать нашу increment!

var myNum = 3
myNum.incrementVal() // 4

Вывод

self - это не то, о чем следует беспокоиться при кодировании Swift, это просто означает, что в extension мы можем ссылаться на instance, из которого мы вызвали функцию.

Это дает хорошую гибкость кодированию Swift и дает вам некоторые дополнительные инструменты в этом наборе инструментов кодирования.

Отличный материал

Надеюсь, вам понравилась эта статья, и свяжитесь со мной, если у вас возникнут какие-либо вопросы или проблемы…

Хотите связаться? Попробуйте ссылку здесь:

https://twitter.com/stevenpcurtis