Повышение производительности компилятора без особых усилий
Расширения чрезвычайно важны в 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 и дает вам некоторые дополнительные инструменты в этом наборе инструментов кодирования.
Отличный материал
Надеюсь, вам понравилась эта статья, и свяжитесь со мной, если у вас возникнут какие-либо вопросы или проблемы…
Хотите связаться? Попробуйте ссылку здесь: