Swift 101 - Класове, променливи, свойства и методи

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

Дефиниране на класове в Swift

Следният код показва пример за дефиниция на клас Swift:

За да декларирате клас в Swift, използвайте ключовата дума class, последвана от името на класа. Ако има суперклас, добавяте двоеточие и името на суперкласа. Началото и краят на класа са обозначени с отваряне и затваряне на къдрави скоби.

В Swift, класовете се дефинират в един единствен .swift файл с изходен код в сравнение с Objective-C, където класовете се дефинират в два отделни файла, заглавен (.h) файл и файл за изпълнение (.m).

Обявяване на променливи

Следният код показва пример за декларация на променлива:

Започвате декларация на променлива с ключовата дума var, последвана от името на променливата. След това добавяте двоеточие, последвано от типа променлива. След това можете да присвоите стойност на променливата, като използвате оператора за присвояване (=).

В Swift, ако присвоите първоначална стойност на дадена променлива, не е необходимо да указвате типа на променливата, както е показано в следния код:

Можете да направите това, защото Swift има нещо, наречено тип извод, където може да разбере, или да изведе типа на променливата въз основа на стойността, която сте задали.

В Objective-C можете да декларирате променливи на екземпляри на ниво клас и локални променливи в рамките на методите. В Swift няма променливи на ниво клас - само локални променливи, които декларирате в рамките на методи. Въпреки това, можете да декларирате свойства на ниво клас (вижте раздела за обявяване на свойствата по-долу).

Краят на Звездичката

В Objective-C използвате звездичка, за да укажете, че дадена променлива съдържа указател към обект. В Swift, константа или променлива може да съдържа указател към адрес в паметта (въпреки че не е директен указател), но никога няма да се наложи да използвате звездичка в този контекст.

Деклариране на прости свойства

Следният код показва пример за декларация за собственост:

Както можете да видите, това е много подобно на деклариране на променлива, с изключение на това, че декларирате свойство на ниво клас, а не в метод.

Както и при променливите, ако присвоите първоначална стойност на свойство, не е необходимо да указвате типа на свойството. Можете също да инициализирате свойства от вътрешността на методите за инициализиране (вижте раздела по-долу относно Initializers за подробности.) Следният код показва пример за деклариране на свойство, без да се указва тип:

В Objective-C, свойствата обикновено съдържат променливи на инстанции, в които се съхранява действителната стойност на имота. Swift опростява свойствата, като обединява понятията за свойства и променливи на екземпляри. Свойствата вече нямат променлива на резервната копие. Всичко за имот е обявено на едно място.

В Swift не е необходимо да използвате ключовата дума self, за да се позовавате на свойство, освен ако методът, в който пишете код, има параметър със същото име като собствеността.

Деклариране на изчислени свойства

Swift също има изчислени свойства, които имат асоциирани методи за получаване и задаване, както е показано в следния код:

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

Забележете, че методите get и set на Thermometer не се отнасят за променлива на екземпляр, защото няма такова нещо като променлива на екземпляр в Swift!

В този случай get методът извлича стойността от свойството temperatureFahrenheit, превръща го в Целзий и връща стойността. Методът set приема стойността, която му е предадена, преобразува го във Фаренхайт и след това съхранява резултата в свойството temperatureFahrenheit .

Стойността, предавана на зададения метод на свойството , се съхранява в имплицитно наречен параметър, наречен newValue . Ако искате да използвате друго име на параметър, можете да посочите името в скоби след набора, както е показано в следния код:

Определянето на име на параметър може да направи кода по-лесен за разбиране. В този пример задаването на името на параметъра на celsiusValue прави по-ясно, че методът на набиране превръща стойността от Целзий в Фаренхайт.

Деклариране на методи

Следният код съдържа пример за декларация за метод Swift:

Както и при Objective-C, в Swift, вие декларирате метод на инстанция между отварянето и затварянето на фигурни скоби на класа, към който принадлежи.

За да декларирате метод, първо посочвате ключовата дума func, последвана от името на метода. Ако методът има параметри, включете ги в скоби. За всеки параметър указвате името на параметъра, последвано от двоеточие, последвано от неговия тип. Ако методът има връщана стойност, тогава добавяте тире и по-голямо от знак ( -> ), последвано от типа на връщаната стойност.

Следният код съдържа пример за метод, който не приема никакви параметри и не връща нищо:

Както виждате, след името на метода се изискват скоби, дори ако няма параметри. Метод, който не връща нищо, не се нуждае от индикатора за връщане на стойността ( -> ) след скобите.

Методи за инициализиране

Следващият код съдържа пример за метод за инициализиране, който се използва за инициализиране на клас.

Методите за инициализиране винаги се наричат init и за разлика от Objective-C никога не връщат стойност. В горния пример методът init приема параметър currentTemperature, в който можете да преминете началната температура. Тази стойност след това се съхранява в температурата Fahrenheit.

Можете да създадете множество методи за инициализация, както е показано в следния пример за код:

В този пример и двата метода се наименуват init, така че за да направим имената уникални, към параметрите се присвоява външно име - от Фаренхайт и от Целзий . Това прави пълните имена на методи init (от Farenhajt :) и init (отCelsius :) съответно.

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

Създаване на екземпляр от клас

Ето пример за това как да създадете копие на клас:

Както можете да видите, за да създадете екземпляр на клас, вие декларирате променлива, която съдържа препратка към класа, въведете знак за равенство (операторът на присвояване) и след това името на класа, последвано от скоби.

заключение

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