
В цій статті ми продовжуємо вивчати програмування на Swift, мові, за допомогою якої створюються додатки для iOS та програми для OS X. Сьогодні вас чекає огляд типів даних мови програмування Swift, а також трішки коду.
При написанні коду ми працюємо з різними типами даних Swift. Базові типи, які використовуються найчастіше:
- String (текстовий рядок);
- Int (ціле число);
- Float (32-бітне число з плаваючою комою);
- Double (64-бітне число з плаваючою комою для довших змінних);
- Bool (логічне значення «true» або «false»).
Swift обробляє їх усіх окремо. Подивимося на особливості типів даних Swift.
Тип String
Ми вже ознайомилися з типом String (рядок символів), коли присвоїли текстове значення змінній. Рядки можуть бути довгими (мільйон і більше букв), короткими (10 букв) або навіть порожніми (без жодної букви). При цьому всі вони працюють однаково.
Swift знає, що змінна name
повинна містити рядок, оскільки під час її створення ми ввели текстове значення «Tim McGraw»:
var name ="Tim McGraw"
Якщо переписати код наступним чином, наш проект перестане працювати:
var name name ="Tim McGraw"
Xcode видасть повідомлення про помилку: «Type annotation missing in pattern», що перекладається буквально як: «Я не можу визначити тип даних, оскільки ви не надали достатньо інформації».
Як діяти в такій ситуації? Насправді у нас є два варіанти: або ініціювати змінну з початковим значенням, або вказати її тип. Створимо змінну, вказавши її тип (String) після двокрапки, а початкове значення присвоїмо пізніше в будь-якій частині коду:
var name: String name ="Tim McGraw"
Такий запис не призведе до помилки, оскільки Swift знає, який тип даних змінна name
отримає в майбутньому.
Зверніть увагу: щоб ваш код був «чистим», не ставте пробіл перед двокрапкою.
Swift завжди прагне заздалегідь знати, якому типу даних відповідає визначення кожної нової змінної та константи. І це добре з точки зору розробника, адже в такому випадку для нього вже реалізовано механізм усунення можливих помилок, пов'язаних з невідповідністю вводимого значення заданому в визначенні типу даних. Наприклад, Swift відмовиться присвоїти числове значення рядковій змінній.
Тип Int
Спробуємо створити нову змінну з типом Int, яка містить ціле число, тобто число без дробової частини. Це можуть бути як позитивні (прості), так і негативні цілі числа: 3, 30, 300, –16777216...
var name: String name ="Tim McGraw" var age: Int age =25
Ми ініціювали рядкову змінну name
та цілочисельну змінну age
.
Зверніть увагу на обов'язкові вимоги: в мові Swift прийнято стандартне угоду про кодування, відповідно до якого імена змінних, констант, методів, функцій починаються з маленької літери (name, age), а типи даних — з великої (String, Int).
Тепер, коли у нас є дві змінні з різними типами даних, ми можемо перевірити роботу механізму відповідності типів в дії. Зробимо наступне:
name =25 age ="Time McGraw"
В цьому коді ми намагаємося присвоїти ціле число рядковій змінній і рядок — цілісній змінній. На щастя, Xcode повідомить нам про помилки, дотримуючись негласного угоди: програміст повідомляє про те, які дані збирається зберігати в змінних, а середовище бере на себе функції контролю за їх строгим і неухильним дотриманням.
Перед тим, як рухатися далі, видаліть або закоментуйте ці дві рядки, в іншому випадку весь наступний код в playground працювати не буде.
Типи Float і Double
У Swift типи даних Float і Double використовуються для зберігання чисел з плаваючою комою, наприклад: 3,1; 3,141; 3,1415926; –16777216,5. Вони відрізняються між собою тільки кількістю відображуваних цифр у десятковій частині числа. Компанія Apple рекомендує завжди використовувати тип Double за замовчуванням.
Введіть наступний код у playground:
var latitude: Double latitude =36.166667 var longitude: Float longitude = –86.783333
Зверніть увагу, що при виведенні результатів у правій частині робочої області playground змінна longitude
десь «втратила» цифру «3» в кінці. Щоб краще зрозуміти, що відбувається, трохи змінимо наш попередній код:
var longitude: Float longitude = –86.783333 longitude = –186.783333 longitude = –1286.783333 longitude = –12386.783333 longitude = –123486.783333 longitude = –1234586.783333
Змінна longitude
має тип Float, в якому передбачено 8 біт для зберігання даних. Це накладає обмеження на відображення цілого і дробового частини — Swift постійно намагається «выровнять» число, «забираючи» розряди з дробової частини і додаючи їх до цілого частини числа. Чим ближча ліва сторона до свого максимуму, тим менше місця залишається для правої!
Змінивши тип з Float на Double, ми отримаємо коректне відображення всіх чисел:
var longitude: Double
У цьому прикладі показано основну відмінність між типами Double і Float. Воно полягає в подвійній точності зберігання і відображення збережених чисел. Окремо хочу звернути увагу на те, що при спробі введення великого числа, наприклад, 123456789,123456789 результат буде округлений до 123456789,1234568.
Тип Boolean
У Swift є вбудований тип даних, який використовується для зберігання значень «true» і «false». Він називається Boolean або коротко Bool:
var stayOutTooLate: Bool stayOutTooLate =true var nothingInBrain: Bool nothingInBrain =true var missABeat: Bool missABeat =false
Підсумуємо. Ми дізналися про основні типи даних у мові Swift (String, Int, Float, Double та Bool), а також про механізм запобігання введенню значення змінної, яке не відповідає її типу. У наступній статті ми розповімо про анотування типів даних (в Swift анотації — це необов'язкові елементи коду, мова визначає тип даних, виходячи з присвоєного значення), а також про інтерполяцію рядків.
Джерело: Hacking with Swift
Читайте далі: Основи Swift. Інтерполяція рядків та анотування типів даних
Потрібен MVP, розробка під iOS, Android або прототип додатку? Ознайомтеся з нашим портфоліо та замовте вже сьогодні!