Advertisement
  1. Code
  2. Swift
Code

Основи на 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

Bulgarian (Български) translation by Mihail Petrov (you can also view the original English article)

В първата статия, основи на Swift, ви запознах какво е Xcode и как да напишете първите си няколко реда Swift код В настоящата статия ще ви покажа как се използват променливи и типове данни в програмният език Swift Ще разгледаме подробно константите както и ще ви обясня защо е силно препоръчително да ги ползвате колкото се може по често

В следващите няколко урока от серията ще ползваме активно възможностите на средата Xcode за да научим основите на програмният език Swift Както вече видяхте програмната среда ни дава възможност да бързо да експериментираме с възможностите на езика

Ще започнем със създааваане на нов проект, в рамките на работната ни среда. Препоръчвам ви да пишете код докато четете статията. Най-добре се учи нов език за програмиране докато се използва на практика.

Стартирайте Xcode 6+ и създайте нов проект изберете New > Playground от менюто FIle Въведете името на проекта. В опцията за платформа Platform  изберете iOS и изберете бутона Next Изберете директорията в който искате да съхраните проекта си и натиснете Create

За целите на нашият урок, ще започнем на чисто, така че изтриете цялото съдържание на проекта. В предишният урок вече видяхме как да ползваме променливи, но нека сега обърнем повече внимание на детайлите за да разберем същността им.

1. Промениви

Деклариране на променливи

За да декларираме променлива ползваме ключовата дума var Въпреки че този синтаксис силно прилича на начина по който декларирането на променливи се извършва в другите езици за програмиране, силно ви препоръчвам да се абстрахирате от опита си с други подобни технологии. Съществуват няколко основни разлики :*

Ключовата дума var е единственият механизъм за деклариране на променливи в Swift Конструкцията е тривиална, ключовата дума var предшества името на променливата на който се присвоява определена стойност

Запомнете, че не завършваме израза с точка и запетая. Въпреки че символа точка  и запетая е опционален, когато пишем Swift приложения, силно препоръчително е да избягваме употребата му.

Също така можем да забележим че не е необходимо да декларираме тип, на нашата променлива. В този ред на мисли е време да ви споделя една от интересните възможности на Swift типовата инферентност (type inference)

Типова инферентност (type inference)

Декларирахме променлива street и й присвоихме стойност 5th Avenue Ако имате опит с езици като JavaScript и PHP то може би си мислите че Swift е без типов или слабо типизиран език за програмиране, но истината не е съвсем такава. Искам да подчертая че Swift е силно типизиран език за програмиране Наличието на фактически типове и тяхната проверка по време на работата на приложението е един от основните аспекти на технологията

Понеже тепърва навлизаме в езика, ще ви покажа малко от магията му. Въпреки че горният израз не декларира изрично, че променливата street е от низов тип String Това е пример за типова инферентност. Стойността, която присвояваме на променливата е от низов тип Swift е достатъчно умен, за да предвиди че щом стойността е от този тип то и променливата трябва да бъде от същият

Следващият израз ще ни предостави същият резултат, с тази разлика че този път ние изрично ще дефинираме типа на променливата Горнит израз, изрично казва че променливата stree е  от низов тип (String)

Swift ви дава възможност да използвате и двата подхода при дефиниране на типа на променлива и константа. Ако не го направите ще получите съобщение за грешка. Можете да видите резултата като декларирате променлива без тип и без стойност

Този израз ще бъде напълно валиден в езици като PHP или JavaScript но не и в Swift. Причината е проста. Въпреки че декларирахме променлива с помощта на правилната ключова дума var , пропуснахме да специфицираме нейният тип Интерпретатора на езика не е способен да прецени какъв е типа на променливата понеже не е присвоена стойност към нея. Ако кликнете върху съобщението за грешка, Xcode ще ви даде подробно информация какъв е проблема.

Можем да премахнем проблема като присвоим стойност на променливата, или изрично специфицираме нейният тип. Изрично ще декларираме променливата да е от тип number. Както виждате грешката изчезна Примера показва  че променливата number е от низов тип

Промяна на типа

Какво вече видяхте, присвояването на нови стойности към вече съществуваща променлива е тривиална операция.

Няма ли да е по-лесно да присвоим числото 10 на променлива от тип number Няма нужда да съхраняваме номера на улицата като низова стойност. Нека видим какъв ще бъде резултата.

Ако присвоим целочислена стойност на променливата number Xcode ще ни върне съобщение за грешка. За съжаление този път не можем да получим достатъчно информация от предоставеното ни съобщение Причината за съобщението е че се опитваме да присвоим числова стойност на променлива която е декларирана с тип  String Обикновено това не е проблем при слабо типизираните езици, но е проблем в Swift

Както вече споменахме, Swift е силно типизиран език за програмиране, което означава, че всяка променлива има специфичен тип, който не може да се променя в хода на програмата. Това е доста важна концепция, обмислете я добре, преди да продължите.

За да елиминираме грешката се налага да сменим типа на променливата number на Int Нека разгледаме примерният код, след актуализацията.

Обобщение

Ваажно е да запомните, че променливите се декларират с ключовата дума  var, като не е необходимо изрично да специфицирате техният тип. Въпреки това е важно да запомните че всяка променлива и констата има тип. Ако типът не е явно дефиниран, ще получите грешка от интерпретатора на езика. Всяка променлива има тип, който не може да бъде променян след декларацията на променливата.

2. Константи

Константите приличат на променливите, по отношение на правилата, които се прилагат за работа с техните типове. Единствената разлика е, че стойността на константите не може да бъде променяна, поради факта че, стойността на една константа е константа.

Деклариране на константи

Използваме ключовата дума let. Нека разгледаме пример, в който ще декларираме константата street,

като заменим var с let. Xcode ще ни върне съобщение за грешка. Не може да променяме стойносттите на константите. За да премахнем грешката, просто трябва да премахнем или закоментираме израза в който променяме стойността на street

Употреба на константи

Декларирането на константи е тривиална операция , който не изисква сложни синтактични конструкции. еквивалентен на процеса по деклариране на променлива.

Употребата на константи в езика се насърчава, когато предварително е известно, че стойността, която искаме да пазим, няма да  претърпи изменение. На лице са множество предимства при използването на този подход, като на първо място това е сигурността. Употребата на константи гарантира ограничен достъп до стойностите с който работи вашето приложение.

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 Типът на a е Int а на b  съответно Double. В момента в който настъпва умножението на двете стойности, става ясно че типовете им не съвпадат, което е проблем за Swift. не е напълно ясно какъв ще е типът на резултата. целочислена стойност или стойност с плаваща запетая.

За да решим проблема трябва да се уверим че и двата операнда са с еднакви типове защото Swift няма да се погрижи за изричното им конвертиране. Съществува набор от глобални функции, които ни помагат в подобни ситуации. В примера използваме функцията Double за конвертиране стойноста на променливата a към число с плаваща запетая и по този начин елиминираме грешката.

Обърнете внимание че типът на променливата а не се е епроменил Кода който разгледахме прилича на операция по кастване на типове, но всъщност не е това. Функцията Double взима стойността на променливата а и я връща като стойност от тип Double , която да се ползва в операцията по умножение продуцираща резултат от тип Double .

Запомнете Swift не прави неявно конвертиране на типовете на стойностите на променливите и константите Това е доста важна концепция, която трябва да запомните.

5. Визуализиране на информация

В предишният пример видяхме функцията println, която има за цел да визуализира информация на екрана и да добави нов ред. Също така можете да ползвате и функцията print която прави абсолютно същото с тази разлика, че не добавя нов ред, към визуализираната информация

Ползването и е тривиално просто извикайте функцията println и подайте стойността, която искате да визуализирате, като аргумент. Аргумента може да бъде променлива, константа, израз или литерал. Разгледайте примера.

Виждате че също така е възможно да използвате и низова интерполация за да комбинирате, променливи, константи, изрази и литерали в едно. Тази операция може да се извърши като оградим желаният от нас елемент Доста удобно.

Научете повече в нашият курс по програмиране със Swift

Ако се интересувате от по задълбочено изучаване на материята, разгледайте нашият подробен курс по разработка на приложения със Swift

Този базов урок ви дава малко по задълбочена представа за това как да ползвате променливи и константи, както и как да заделяте памет за съхранение на различни типове данни.

Заключение

Изключително важно е да добиете силна представа за  начина по който Swift работи с променливите и константите. Възможно е част от концепциите да ви се стоят чужди, но постарайте се да разгледате примерите още няколко пъти и ще придобиете солидна основа за разбиране на проблематиката. По този начин ще направите кода си по качествен и лесен за четене. В следващият урок от серията, ще се запознаем с колекциите в Swift

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.