Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Swift

Swift с нуля: переменные и константы

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Swift From Scratch.
Swift From Scratch: Introduction
Swift From Scratch: Collections and Tuples

Russian (Pусский) translation by Michael Orlov (you can also view the original English article)

В первой статье "Swift с нуля" вы познакомились с интерактивной средой Xcode и написали первые несколько строк на языке Swift. В этой статье мы начинаем изучение основ программирования на языке Swift с изучения переменных и типизации. Мы также рассмотрим константы и причины, по которым рекомендуется использовать их как можно чаще.

В следующих частях этой серии мы будем использовать интерактивную среду Xcode, чтобы освоить основы языка программирования Swift. Мы увидели в предыдущей статье, что интерактивная среда идеально подходит для преподавания и обучения Swift.

Начнем с создания новой интерактивной среды специально для этих уроков, я рекомендую вам сделать это прямо сейчас. Практическое использование языка - это отличный способ узнать его синтаксис и понять его концепции.

Запустите Xcode 6 + и создайте новую интерактивную среду, выбрав Новый > Среда... из меню Файл в Xcode. Введите имя среды, установите значение iOS для Платформы и нажмите кнопку Далее. Скажите Xcode, где вы хотите сохранить среду и нажмите Создать.

Очистите содержимое среды, чтобы мы могли начать с чистого листа. Мы уже использовали переменные в предыдущем уроке, но сейчас давайте взглянем поближе на мельчайшие детали, чтобы лучше понять, как работает Swift под капотом.

1. Переменные

Объявление переменных

В Swift для объявления переменной мы используем ключевое слово var. Хотя в других языках программирования переменные объявляются похожим способом, я настоятельно советую вам не думать о других языках программирования, когда вы используете ключевое слова var в Swift. Есть несколько важных отличий.

Ключевое слово var - это единственный способ объявления переменной в Swift. Наиболее распространенный и краткий способ использования ключевого слова var - объявить переменную и присвоить ей значение.

Помните, что мы не добавляем в конце этой строки кода точку с запятой. Так как точка с запятой необязательна в Swift, рекомендуется не использовать ее, если в этом нет необходимости.

Вы также могли заметить, что мы не указали тип при объявлении переменной street. Это подводит нас к одной из ключевых особенностей Swift - выведению типа.

Выведение типа

Приведенная выше декларация объявляет переменную street и присваивает ей значение 5th Avenue. Если вы новичок в Swift или вы привыкли к PHP или JavaScript, то можете подумать, что Swift безтиповый или слабо типизированный язык, но ничто не может быть дальше от истины. Позвольте мне повторить, что Swift является строго типизированным языком. Безопасность типов - это один из краеугольных камней языка.

Мы только начали, а Swift уже показывает нам немного своей магии. Несмотря на то, что приведённая выше декларация не указывает явно тип, переменная street имеет тип String. Так выглядит выведение типа Swift в действии. Значение, которое мы присваиваем street, - это строка. Swift достаточно умен, чтобы это увидеть, и неявно устанавливает тип переменной street в String.

Следующее предложение дает такой же результат. Разница заключается в том, что здесь мы явно задаём тип переменной. Следующее предложение буквально говорит, что street имеет тип String.

Swift требует явно или неявно задавать тип переменных и констант. Если вы этого не сделаете, Swift будет ругаться, выбрасывая ошибку. Добавьте следующую строку в вашу интерактивную среду, чтобы увидеть, что я имею в виду.

Это предложение будет допустимым в PHP или JavaScript. Однако в Swift оно является недопустимым. Причина проста. Несмотря на то, что мы объявляем переменную с помощью ключевого слова var, мы не указываем тип переменной. Swift не может вывести тип, так как мы не присваиваем значение переменной. Если щелкнуть на ошибку, Xcode покажет вам, что не так с этим предложением.

Мы можем легко решить эту проблему, сделав одну из двух вещей. Или присвоить значение переменной, как мы делали раньше, или явно указать тип для переменной number. После явного задания типа для number ошибка исчезает. Приведённые ниже строки кода говорят, что number имеет тип String.

Изменение типа

Как вы можете видеть ниже, присвоение новых значений для street и number делается очень просто и происходит безо всяких сюрпризов.

Не было бы проще присвоить номер 10 переменной number. Нет необходимости хранения номер дома как строку. Давайте посмотрим, что произойдет, если мы это сделаем.

Если мы присвоим number целое число, то Xcode выбросит другую ошибку. К сожалению на этот раз сообщение об ошибке не слишком полезно. Причина, по которой Xcode выдает ошибку, в том, что мы пытаемся присвоить целое число переменной типа String. Это не проблема в слабо типизированных языках, но в Swift это недопустимо.

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

Чтобы избавиться от ошибки, необходимо объявить переменную number как целое число Int. Взгляните на обновленный пример ниже.

Резюме

Важно, чтобы вы запомнили следующее. Можно объявлять переменную с использованием ключевого слова var, при этом необязательно явным образом объявлять тип переменной. Однако помните, что в Swift каждая переменная — и константа — имеет тип. Если Swift не может вывести тип, то он будет ругаться. Каждая переменная имеет тип, и этот тип изменить нельзя.

2. Константы

Константы похожи на переменные с точки зрения типов. Единственная разница, что значение константы нельзя изменить после того, как оно было задано. Значение константы, да, является неизменным.

Объявление констант

Для объявления констант используется ключевое слово let. Взгляните на следующий пример, в котором мы объявляем street как константу, а не переменную.

Если мы отредактируем только первую строку, заменив var на let, очевидно, что Xcode выдаст ошибку. Попытка изменить значение константы не допустима в Swift. Удалите или закомментируйте строку, в которой мы пытаемся присвоить новое значение для street, чтобы избавиться от ошибки.

Использование констант

Думаю, вы согласны с тем, что константы в Swift объявляются очень просто. Необязательно использовать экзотические ключевые слова или сложный синтаксис. Объявлять константы так же легко, как и переменные, и это не случайно.

В Swift рекомендуется использование констант. Если значение не будет изменяться или вы не планируете его менять, то оно должно быть константой. У этого подхода есть ряд преимуществ. Одно из них - это производительность, но более важное - безопасность. Используя константы везде, где это возможно, вы добавляете ограничения к вашему коду, что делает его более безопасным.

3. Типы данных

У большинства языков программирования есть широкий диапазон типов для хранения строк, целых чисел, чисел с плавающей точкой и т.п. Количество типов в Swift ограничено. Взгляните на следующий список.

  • Int
  • Float
  • Double
  • String
  • Character
  • Bool

Важно понимать, что вышеуказанные типы не являются основными или примитивными. Это именованные типы, которые реализуются в Swift с использованием структур. Мы изучим структуры более подробно в следующих статьях этой серии, но вы должны понимать, что те типы, которые мы видели, отличаются от элементарных типов, которые вы могли использовать, например, в Objective-C.

Есть много других типов данных в Swift, такие как кортежи, массивы и словари, и мы будем изучать их чуть позже в этой серии статей.

4. Преобразование типов

Есть еще одна тема, которую нам нужно обсудить - преобразование типов. Взгляните на следующий фрагмент кода Objective-C. Этот блок кода выведет число 314,000000 в консоль.

Среда исполнения Objective-C неявно преобразует a в тип числа с плавающей точкой и умножит его на b. Давайте перепишем показанный выше фрагмент кода, используя Swift.

Пока не обращайте внимания на функцию println. Сначала я хочу сосредоточиться на умножении a и b. Swift выводит тип Int для a и Double для b. Однако, когда он пытается умножить a и b, то замечает, что они разных типов. Для вас это может быть и не проблема, но Swift устроен по-другому. Swift не знает какой тип должен быть у результата этого умножения. Должен ли это быть integer или double.

Чтобы устранить эту проблему, мы должны убедиться, что оба операнда умножения имеют одинаковый тип, потому что Swift не может неявно преобразовать операнды для нас. Есть множество повсеместно доступных вспомогательных функций, которые делают эту задачу тривиальной. В обновленном примере ниже мы вызываем функцию Double для переменной a, чтобы преобразовать её значение в тип double. Это устраняет ошибку.

Обратите внимание, что тип переменной a не изменился. Несмотря на то, что приведённый выше фрагмент кода может выглядеть как преобразование типа, это не то же самое. Функция Double принимает на вход значение a, возвращает это значение как тип Double, и этот результат используется в умножение с b. Результат имеет тип Double.

Необходимо помнить, что Swift отличается от C и Objective-C. Он не может неявно преобразовывать значения переменных и констант. Это еще одна важная концепция, которую нужно понимать.

5. Вывод строки

В предыдущем фрагменте кода мы вызывали нашу первую функцию - println. Функция println очень похожа на функцию NSLog в Objective-C, она выводит свой аргумент и добавляет новую строку. Стандартная библиотека Swift включает также функцию print, которая делает то же самое, что и println, но не добавляет новую строку.

Чтобы напечатать что-то, нужно просто вызвать функцию println и передать ей параметр. Это может быть переменная, константа, выражение или литерал. Взгляните на следующие примеры.

Также можно использовать строковую интерполяцию для объединения переменных, констант, выражений и литералов. Строковая интерполяция очень легко выполняется в Swift, достаточно просто заключить переменные, константы, выражения или литералы в скобки \(). Проще пареной репы.

Узнайте больше из нашего курса программирования на Swift

Если вы хотите глубже освоить Swift, то вас может заинтересовать наш полный курс по разработке на языке Swift.

В этом уроке более подробно рассматриваются переменные, константы и выделение памяти для хранения различных типов данных.

 

Заключение

Очень важно понимать, как Swift работает с переменными и константами. Хотя может потребоваться некоторое время, чтобы привыкнуть к концепции констант, после того, как вы освоите такой подход, ваш код будет гораздо безопаснее и легче для понимания. В следующем уроке из этой серии мы продолжим наше исследование Swift и изучим коллекции.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.