Данная статья изначально задумывалась как выборка самых интересных и неявных моментов выявленных во время прочтения официальной книги по Swift от Apple – “The Swift Programming Language“, но в процессе написания все больше приходило понимание, что будет крайне тяжело решить что оставить, а что выкинуть из описания языка. С другой стороны некоторые моменты хотелось дать более развернуто, некоторые исходные коды сделать пусть более академическим, зато более сжатыми, чтобы при необходимости окинуть взглядом небольшой кусочек кода и пробежавшись по сноскам понять максимальное количество подводных камней. А когда я взялся за вторую книгу от Apple – “Using Swift with Cocoa and Objective-C“, то понял что часть информации дублируется, и проще будет слить все воедино.
Таким образом перед вами сжатое изложение на русском языке двух основополагающих книг от Apple по swift. Развернуто я постарался рассмотреть optionals и строки, проведя свои исследования как это устроено или как проще с ними работать.
Так же хочу отметить проблему с терминологией, я не профессиональный переводчик, и к некоторым словам было тяжело подобрать перевод, так что в конце статьи будет словарик, в котором я приведу мои переводы некоторых слов и словосочетаний. При этом я постараюсь использовать и оригинальные английские варианты, чтобы проще было искать по поиску.
Весь код первой книги проверялся на Swift 1.2, но ближе к концу написания – я поставил бету XCode 7 и увидел, что в Swift 2.0 println – убрали, теперь есть только print, так что я тоже решил использовать print, все равно все там будем рано или поздно. Ну и заодно прогнал весь код на XCode Beta 7, проверив на валидность.
Итак, начнем.
Содержание:
- Constants and Variables (константы и переменные)
- Booleans (Логический тип)
- String interpolation (Интерполяция строк)
- Tuples (Кортежи)
- Optionals (опциональные типы или опционалы)
- Optional Binding (Привязка опционалов)
- Implicitly Unwrapped Optionals (Неявно распакованные опционалы)
- Nil Coalescing Operator (Оператор объединения со значением nil)
- Range Operators (Операторы диапазонов)
- String (Строки)
- Array (Массив)
- Set (Множество)
- Dictionary (Словарь)
- Loops (Циклы)
- If (Если) и Switch (Переключатель)
- guard (охранный оператор) Swift 2.0
- Functions (Функции)
- Closures (Замыкания)
- Enumerations (Перечисления)
- Enumeration Case Pattern (Паттерн выбора перечисления)
- Optional Pattern (Паттерн опционала) Swift 2.0
- Structure and Class (Структура и класс)
- Properties (Свойства)
- Methods (Методы)
- Subscripts (Индексы)
- Inheritance (Наследование)
- Initialization (Инициализация)
- Deinitialization (Деинициализация)
- Automatic Reference Counting (Автоматический подсчет ссылок)
- Optional Chaining (Опциональная последовательность)
- Type Casting (Приведение типа)
- Nested Types (Вложенные типы)
- Extensions (Расширения)
- Protocols (Протоколы)
- Protocol Extensions (Расширения протоколов) Swift 2.0
- Generics (Универсальные шаблоны)
- Access Control (Контроль доступа)
- Операции с битами
- Overflow Operators (Операторы переполнения)
- Precedence and Associativity (Приоритет и ассоциативность)
- Operator Functions (Операторные функции)
- Custom Operators (Пользовательские операторы)
- Error Handling (Обработка ошибок) Swift 2.0
- Checking API Availability (Проверка доступности API) Swift 2.0
- Initialization (Инициализация)
- Accessing Properties (Обращение к свойствам)
- Working with Methods (Работа с методами)
- id Compatibility (Id совместимость)
- Working with nil (Работа с nil)
- Closures and Blocks (Замыкания и блоки)
- Object Comparsion (сравнение обьектов)
- Swift Type Compatibility (совместимость типов Swift)
- Lightweight Generics (легковесные дженерики) Swift 2.0
- Objective-C Selectors (Селекторы Objective-C)
- Writing Swift Classes with Objective-C Behavior (Написание Swift классов с поведением Objective-C)
- Writing Initializers and Deinitializers (Написание инициализаторов и деиницианализаторов)
- Integration with Interface Builder (Интеграция с Interface Builder)
- Property Attributes (атрибуты свойств)
- Implementing Core Data Managed Object Subclasses (Реализация наследников Core Data управляемых обьектов)
- Using Swift Class Names with Objective-C APIs (Использование Swift имен классов в Objective-C API)
- Working with Cocoa Data Types (Работа с Cocoa типами данных)
- Adopting Cocoa Design Patterns
- Interacting with C APIs (Взаимодействие с C API)
- Глоссарий
Уварите переносы слов в тексте! Невозможно читать. Все глаза в крови из=за этих разрывов слов. Уже лет 20 как отказались от них, даже в бумажном варианте.
Забавно, я сижу в основном из под Chrome, там не было никаких переносов. В Safari увидел, зрелище психоделическое. Сейчас посмотрю как убрать.
Ужас! Даже мой предыдущий комментарий с переносами. Кошмар!
Вроде везде поправил, прошу прощения за “глаза в крови”, не со зла. Но в любом случае не надо так нервничать, оно того не стоит ;)
Супер! Это – рог изобилия, для меня! Правда swift – мой первый язык и я изучаю его всего пару недель, но думаю разберусь!) Спасибо!
Приятно, когда двухмесячный труд оказался не напрасным )
Свифт очень приятный язык, в качестве первого думаю он вполне пойдет. Но в случае серьезного увлечения разработкой под iOS придется все таки подучить и Objective-C (а то и C), по крайней мере в ближайшие годы это будет полезно, учитывая большую базу наработок на Obj-C, и столь юный возраст Swift.