Расширения — одна из лучших функций языка программирования Swift, и для них есть несколько вариантов использования. Как только вы овладеете ими, вы сможете придумать действительно хороший и понятный код. Некоторые из вариантов использования:
<сильный>1. Расширение типов систем
С помощью Swift вы можете использовать любой системный тип, например Int
или String
, чтобы сделать код более читабельным и получить дополнительные функциональные возможности, которые в противном случае вам пришлось бы писать самостоятельно. Например, обратите внимание на следующий код, который повторяет некоторую задачу несколько раз:
extension Int {
func repetitions(task: () -> Void) {
for _ in 0..<self {
task()
}
}
}
Вместо того, чтобы создавать отдельную функцию для повторения задачи и управления несколькими параметрами, вы можете просто расширить Int
и сделать ее более читабельной:
3.repetitions({
print("Hello!")
})
// Hello!
// Hello!
// Hello!
Все могут согласиться с тем, что это самый простой и чистый код, который вы когда-либо могли создать.
2. Сделайте беспорядочный код читаемым
Проверьте следующее определение:
class MyTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, CLLocationManagerDelegate {
// a lot of functions
}
Если вы поместите все в один класс или структуру, в какой-то момент код станет беспорядочным, и будет трудно отследить, какой метод принадлежит какому протоколу или классу. Вместо этого вы должны использовать это:
class MyTableViewController: UIViewController {
}
extension MyTableViewController: UITableViewDelegate {
}
extension MyTableViewController: UITableViewDataSource {
}
// etc...
<сильный>3. Расширения протокола
Расширение протокола — одна из самых крутых функций Swift. Они позволяют добавлять методы в любой класс, использующий протокол, который вы расширяете. Например, давайте расширим протокол CollectionType
.
extension CollectionType {
func printAll() {
print(self)
}
}
Теперь вы можете использовать метод printAll()
на любой структуре, использующей этот протокол! Некоторые из них являются родными типами Swift, такими как Array
, Dictionary
или Set
.
Это лишь некоторые из основных применений расширений, и они могут делать гораздо больше:
- Добавьте свойства вычисляемого экземпляра и свойства вычисляемого типа
- Определение методов экземпляра и методов типов
- Предоставить новые инициализаторы
- Определить индексы
- Определение и использование новых вложенных типов
- Сделать существующий тип соответствующим протоколу
person
Said Sikira
schedule
02.04.2016