Всем привет. Я решил сделать серию постов с вызывающим названием «Swift за 24 часа». Это не образовательная программа для начинающих. Скорее это шпаргалка для тех, кто уже имеет солидный опыт разработки для Mac и iOS на старом добром Objective-C и хочет быстро, очень быстро, освоить Swift и начать писать проекты на этом прекрасном языке.
Swift за 24 часа — Введение
Итак. Swift – это новый язык программирования для разработки iOS и OS X приложений, который сочетает в себе все лучшее от C и Objective-C, но лишен ограничений, накладываемых в угоду совместимости с C. Swift представляет свои собственные версии всех основных C и Objective-C типов, включая Int для целых, Double и Float для значений с плавающей точкой, Bool для логических значений, и String для текстовых данных. Swift также представляет мощные версии трех основных типов коллекций — Array, Set и Dictionary.
Также как C Swift использует переменные и константы для работы и хранения значений.
В дополнение к стандартным типам Swift предлагает продвинутый тип ранее не существовавший в Objective-C, под названием tuple (тапл), в переводе на русский «кортеж». Тапл позволяет создавать и передавать группы значений. Можно использовать тапл для возврата из функции нескольких значений под одним именем.
Swift также представляет опциональные типы, которые позволяют обрабатывать ситуации, когда нет значения. Это похоже на nil в Objective-C, который может быть применим абсолютно к любым типам, не только к указателям.
Swift — это типо-безопасный язык программирования. Если часть вашего кода ожидает тип String, Swift предотвратить передачу Int по ошибке.
Swift — мощный язык программирования, такой же понятный и увлекательный, как скриптовый язык. Он поддерживает так называемые playground-ы, которые позволяют программистам экспериментировать с кодом, видя результат в режиме реального времени без необходимости компилировать и запускать приложение.
Swift вобрал в себя все лучшее от современных языков и разработан с учетом обширного опыта компании Apple. Swift – это новый фантастический способ создавать приложения для iOS и OS X, и Apple продолжает развивать его, добавляя новый функционал и представляя новые возможности.
Я же со своей стороны предлагаю всем вам, дорогие читатели, амбициозную цель — Изучить Swift за 24 часа.
Удачи!
Константы и переменные
Объявление констант и переменных
Для того, чтобы объявить константу используем ключевое слово let, для того, чтобы объявить переменную используем ключевое слово var
let maximumUserAge = 50 var activeUsersCount = 0
Можно декларировать несколько переменных в одну линию через запятую
var x = 0.0, y = 0.0, z = 0.0
Apple выделяет следующее правило
Аннотация типов
Прежде чем перейти далее следует отметить правило, которое Apple выделило особо
Например, если вы объявите переменные как
var age = 10 var name = "Alexander"
Swift автоматически определит тип age как Int, a name как Sting
Если все же вы хотите задать тип в ручную, то после имени переменной или константы поставьте двоеточие и после через пробел укажите тип
var age: Int = 10 var name: String = "Alexander"
Можно объявлять сразу несколько констант или переменных одной строкой через запятую
var red, green, blue: Double
Именование констант и переменных
Имена констант и переменных могут содержать практически все символы, включая Unicode
var Ω = 10 let номерШколы = 6 let 😎 = "Smile"
за исключением пробелов, математических символов, стрелок, private-used Unicide points или символов для рисования. Не могут начинаться с числа, но содержать числа могут.
Как только вы объявили переменную или константу, вы не можете ее переобъявить с тем же именем или изменить ее тип.
Ну и естественно, вы можете менять значения переменных и не можете менять значения констант.
// нельзя let maximumUserAge = 50 maximumUserAge = 60 //cannot assign to value // можно var activeUsersCount = 0 activeUsersCount = 10
Вывод констант и переменных
Чтобы вывести в консоль значение константы или переменной используем функцию print(_:separator:terminator:)
var welcomeMessage = "Hello World" print(welcomeMessage)
В результате в консоль будет напечатана строка «Hello World\n»
В Swift есть такая классная вещь как интерполяция строк.
Вспомним Objective-C
NSLog(@"Welcome message is %@", welcomeMessage)
В Swift аналогичный вывод будет выглядеть так
print("Welcome message is \(welcomeMessage)")
Прекрасно, не правда ли.
Комментарии
Комментарии остались без изменений.
/** * update scrollView frame with ads banner */ // Hello World, this is just a comment
Точка с запятой
Целые
Swift предоставляет знаковые и беззнаковые целые в 8, 16, 32 и 64 битной форме. Именование подобно С. Так 8-битовое беззнаковое — UInt8, 32-битовое знаковое — Int32.
Границы целых
Можно получить доступ к минимальному и максимальному значению каждого целочисленного типа через min и max свойства.
let minValue = UInt8.min // minValue is equal to 0, and is of type UInt8 let maxValue = UInt16.max // maxValue is equal to 65535, and is of type UInt16
Int
В большинстве случаев вам ненужно специально указывать размер вашего целого в коде. Swift представляет специальный дополнительный тип Int, который соответствует платформе
- On a 32-bit platform,
Int
is the same size asInt32
. - On a 64-bit platform,
Int
is the same size asInt64
.
UInt
UInt — беззнаковый целый тип.
- On a 32-bit platform,
UInt
is the same size asUInt32
. - On a 64-bit platform,
UInt
is the same size asUInt64
.
Значения с плавающей точкой
Double
представляет 64-bit floating-point number.Float
представляет a 32-bit floating-point number.
Типо-безопасность и типо-определение
Swift — типо-безопасный язык программирования. Если часть вашего кода ожидает тип String, Swift предотвратить передачу Int по ошибке.
Swift выполняет проверку типов на этапе компиляции. Это позволяет вам отлавливать ошибки настолько рано насколько это возможно.
Типо-определение в частности применяется когда вы объявляете переменную или константу и задаете ей значение. Swift определит тип по значению
let meaningOfLife = 42 // meaningOfLife будет иметь тип Int
Значения с плавающей точкой по умолчанию будут Double
let pi = 3.14159 // pi будет иметь тип Double
Числовые литералы
Целый литерал может быть записаны как:
- Десятичное, без префикса
- Двоичное, с
0b
префиксом - Восьмиричное, с
0o
префиксом - Шестнадцатиричное, с
0x
префиксом
let decimalInteger = 17 let binaryInteger = 0b10001 // 17 in binary notation let octalInteger = 0o21 // 17 in octal notation let hexadecimalInteger = 0x11 // 17 in hexadecimal notation
Также Swift позволяет применять следующие формы записи
let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0 let paddedDouble = 000123.456 let oneMillion = 1_000_000 let justOverOneMillion = 1_000_000.000_000_1
Преобразование типов
Целочисленные преобразования
let cannotBeNegative: UInt8 = -1 // UInt8 не может содержать отрицательные значения, компилятор выдаст ошибку let tooBig: Int8 = Int8.max + 1 // Int8 не может содержать значение больше максимального // компилятор выдаст ошибку let twoThousand: UInt16 = 2_000 let one: UInt8 = 1 let twoThousandAndOne = twoThousand + one // операция с разными типами // компилятор выдаст ошибку let twoThousandAndOne = twoThousand + UInt16(one) // необходимо преобразование к большему типу
Преобразования целых и значений с плавающей точкой
Преобразования типов между целыми значениями и значениями с плавающей точкой должны быть четкими
let three = 3 let pointOneFourOneFiveNine = 0.14159 let pi = Double(three) + pointOneFourOneFiveNine // pi равно 3.14159, и оно будет типа Double
let integerPi = Int(pi) // integerPi равно 3, и оно будет типа Int
Алиас типов typealias
Вы можете придумать типу любой алиас, например
typealias AudioSample = UInt16
Как только вы определили алиас типа, вы можете использовать его где угодно
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0
Логический тип
Swift имеет базовый Boolean тип, называемый Bool. Boolean значения называются логическим, потому что они могут быть только true или false. Swift представляет два Boolean значения, true
and false
:
let orangesAreOrange = true let turnipsAreDelicious = false
Вам не нужно декларировать тип Bool, если вы присвоили переменной или константе значение true
или false.
Логические значения практически применимы когда вы работаете с условными операторами
if turnipsAreDelicious { print("Mmm, tasty turnips!") } else { print("Eww, turnips are horrible.") }
Типо-безопасность в Swift предотвратит использование не Bool в том месте, где должен быть Bool. Следующий пример кода выдаст ошибку
let i = 1 if i { // this example will not compile, and will report an error }
В то же время альтернативный вариант сработает
let i = 1 if i == 1 { // this example will compile successfully }
Поздравляю! Мы закончили 1ый час из 24 на изучение Swift. Рекомендую закрепить данный материал потренировавшись в плейграунде.
Продолжение следует…