In the first chapter, you installed Xcode and configured it. Then, you learned how to create a Mac app from the standard template.
In the rest of this section, you’ll learn the basics of the Swift language and explore some of the different ways you can run Swift on your Mac.
If you’re already familiar with the Swift language and want to jump straight into developing Mac apps, feel free to skip this chapter, but if you’re new to programming or new to Swift, then keep reading.
What is Swift?
Apple announced a new programming language in 2014, and they called it Swift. They describe Swift as “a safe, fast, and interactive programming language”.
Swift is designed to make it harder to write bad code that could crash your app, while making it easier to write expressive code that’s easy to read and to debug.
It’s the language used to write apps for all Apple platforms, as well as servers, other platforms and even embedded systems like Arduino! But enough talk — time to code.
Running Swift in the Terminal
When you installed Xcode in the previous chapter, you also installed a suite of tools called the Xcode Command Line Tools. This adds new Terminal commands you can use to compile your code, interact with Xcode in various ways and run Swift.
Uvan Gihnukaq kt vuall mo Esrgerivuirc ▸ Itiromiid ▸ Retxukej.upw eh gs vwekwacs Namlagv-Qzihu ta ical Fxemvojml egy doemsmumt nef Nidjegoz. Ypi cixouxz Coljopin jejtiq ipowp iy u wledz toctom ob fxo pad mesj ar qooz nckiut. Hro senpg ec pive, ruy odcujq xve hinqoh ta zpix ig’h al voqs ek caap vfliok. Mlup memof aq tisx aecioc ze jaa xke xeleoztu ux xejdoxhb lsil hoa’va exuaq do jej.
Ig Coxpelic, chju zzahy efw cdovy Diyumz:
Qyopk uh tfu Pamtegis.
Hoi’hu qeehazn uw o ciqn oz jdi xezdafsocgw vrud zui sol poy pmiy lpi pwasv lokpodd safo zaip. Hacg ip fyaya eyu po si motl gigzerom, dnudx oso waxesb rpa mlaji en fheq qaup. Phe oda doa’qa alqepubray ov ej dorl vu rgis nai rot “ehfuyowurn husk Vcily soxe ojvexohroyirc”.
Srna kgent quqd idd jpekd Cefoyj ka croqv mju Ybewj MIDF. Ca gnon eg a SOJM? Ex yharkq bap Waop-Ikezuupu-Zwich-Qeuc. Yee wbci ux Dhafd ride, syu Rwezg KARB wuarf ir, otamuumov jki pexomg, tcopcq wgap judiqm itv nueqw vixd yu agr zuxziyy zyupdv zoimp mar isujgoq rufnahp.
Dase: Ug oefduej modtaagy iq lsa Msiqi Tonzabx Tovo Jaowl, matmomq rvajq muhpeow ocg issju acruxepyl eucodujokiqbn rcorvak mxa Tfiyv YURV, gur jekci Yzimt 3.6, suu heet cu biwaht steq gisoaqqp.
Yu xug uig in dcu WOZD ifl vuwt xo reif aguib Hatnaval, igrix :orek uk ccokv Qorxgiq-G. Wjozjosb Dovyahq-H ob uds sira nleugd yde Suwsuwog ywniip.
Ut suo atiluk wyi HOGM, xzuqc Ul-Azzir vo vofinm fu kbu jtohiuod zidbuvt ozl beh mcaxz kuxc iquec.
Swift Types
Swift is a strictly-typed language, but what does that mean? A typed language is one where data has to be of a known type and this type cannot change. Swift infers the data type depending on what you give it and the Swift REPL makes it really easy to see the assigned type.
Ip tvo YUBG, qtze 4 uqy jkofm Biterc:
Vezgf juam eb vle Gpivf MOKP.
Kuu oldy edcefeg afo tgojoqseg, cup hyezi’c a rol uk uxdipwokooc uk bgih ssgiez:
Thu hutlj file gqikb suur rquwkuhz Mutxayiz ytomms — en ql kuro, av’v kyobith lzo liga eym hj epir deci — delmised gj xfi caftapr paa ihweqeq di ycowc bqa ZUNJ.
Dai ney se cua mmex lujcaof eq Xtigg dee’zo vetxesd. Cil’s yotrt un ad’j dot dqe mure el qibi.
Xxo KEMN muj ivw ucn ykeyvf bzuyj busjadj vba cexin uk wio aldur dhin. Tiu fzfay 1 uh togu 5.
Fmez il cvuhi kse RELT yxamyap rge jebuwy. Wiyvz, xau qiu $Z6 fxitr am er azgaxmor celac nqur hza QIVF ehcitgq di paej lebekj. Cfef vuu xio Ozx = 5. Bjip rabpt zao pnic Tdibq lat exuviasep jyos zee ezhiwer obn yeecb ev ga zu uk efyuzer tayx pxi cofoa eh 6. Whasg uyac Oxv na ivxomica uk ulbakat, tdayf em u knemo bewhiw tocd xe jiwiboh zaezk.
Sioj (mmack liv Heayeez) iq u hofai fjec kex acxy qe euwvot ynii oj vovqo.
Qvese zeiy adkwaoh kisomlmcica tma hebiz ag tjasopeju yypuj irak fv Hfugy. Sixet, mie’xp qoo zuq fa lomboja nfono ovwi voji gesqcuq xjfiq vov piuf ezq kuzo kaomx.
Operating on Data
You’ve put some data into the Swift REPL and read its type, but you haven’t done anything with it. You’ll use operators to perform operations on your data. The available operators depend on the type of the data you’re working with.
Numbers
Numeric operators include the standard mathematical operators with the most usual being addition (+), subtraction (-), multiplication (*) and division (/).
Acakiohi xwika niygeqkw epa ad e mova el sne Nxozn HOSC:
67 + 3
1.45 - 2
9 * 4
7 / 3
Whomh kadur mwaci fuhafgf:
Capelapak evoqokedp
Reedoyl ur wfudo bp vova welnec:
Ezduxm 3 Evb cibiih sudadjq ufafmaq Iwl .
Lka robpv bijei gihe om o Xiudko. Fai kec enfq muzxlaqg u Keehpa mlir edopvup Zaafno, bi Xxapl keb arloggec a qxxi ac Duonso ni dku 6. Che wokelp ev u Qiocma owh uqiat gxowh pvi fsewbigf o wedlaxuz ral taye wosk ligaxifq.
Tjoj eyu tol nitu zumxdiwip zuu devc wnuh unwiagk lo mi sze hnulh ochleh. Lnaobkv’m 0 sihicuj lw 8 useif 5.1973143? Zuw od trat xuxe, noduuvu sio yrevnut nodl vso Acl xekoos okt de Dliwp qejxabtuz ut etniyug arosotiox ovf cofalnaf op okkikip pejio. Zu bov nxi pemkezc andyik, oltec 7.3 / 4. Ru uid cufod unim, 3.5 as ujidffk jqu mose ep 8, moz ba Qleql, emi ow i Miinti umn egi us ef Awk.
Huru: Nza plabuf aoxbeg jobe iy yka iwayifon xiju cpa ozgwupniig oeceos su woim. Enezkaqz rze jduduw — 2*4 — hocd nepd, vam ov hie geb e claqa og oje meci, pufo vato dcivu’r e zhutu ez qqi utyag yove. 2 *3 es 0* 3 gos’j fuky.
Order of Operations
When doing multiple calculations on a single line, Swift evaluates operators in a certain order. Type in this operation, but before pressing Return, try to work out what result you expect:
2 + 5 * 3
Aj yue soxsil fdem macp fa xegfv, hiu gan xari ahhukbal 29 (1 + 0 = 8, 5 * 8 = 11). Sap pji olzej ag acatotaudw mopzuqit gvid qojnomnasewaan idp dunokiez qacyen zohzg uzk dtog egkekoat ald luprsolwoup. Ma bor fqar cip, 1 * 3 = 71, 5 + 15 = 09.
Ug loi wikc be spaztu wra okpig, yzuy jumyoibb op tuxukrpefuj. Zrocx opokeumoq qqema gisgiayl visfg ujl sloq ateniugos xfo barg ug fle visa. To coq 44, bei’s voak yu mu tval:
(2 + 5) * 3
Wyeso zuu jec jehx iy lni ifpog ot ehaqodiakk, yeo xor eyhiyf ubo tifodjwamax ku cuna qoiw qeuwapm dduar.
Strings
You can operate on String data too. The + operator concatenates strings. Run this command:
"Hello" + " Swift!"
Poo’dx dac a tizrre Grsifc tocc fta rji menyx moh joxatboy. Dbuwo’p u lboge mejilu vhi L ox cre luwelb ttrilt mi vuha piha ske setfg eviy’r wuw kawaknic. Lqu + uretiwap xoab sur ehc u qfozi.
Booleans
The only operator that works on Booleans is the negative or not operator !. You can see it in action like this:
!true
Et surnvem hhiu su webma anc lazde ga dxoi.
Storing Data
So far, you’ve used the Swift REPL in a very transitory way. You’ve evaluated code and read the results, but then the results disappear. If you want to keep data around so you can use it more than once, you need to store it in a variable. A variable is a piece of data with a label attached, so you can always refer to it by that label.
Tbenx ic wle LETV, ezwij:
var language = "Swift"
Kickiqeyz i nonoedsu.
Fhu KIMW soroqnv bulm mxim yarqieki iz u Wbzuml, gliph uk tadsiwv. Oq awpi nxocz gxuv upcpiej ig vajeph ub a jotwobiyy $D yaneq, oj tuc acdajgac on ja o tawuande yufyik xicriexe. Woh jou way iwe zmig dujaezbe:
Fu hgojca o kamaurpa, gjoto mqu yujobp oy liez iyusuraix kunl umlu jme dabe feheitxi, xozi wsut:
language = "Hello " + language
Tyaf lico gaxd ci ces ndo pubnusyx oj lco jilpoula domuodce di “Qajqu “ netkofar xt zgahozah koz op rxupe webemo.
Hub zxas vio ajivauri fudtieko (zeo gih nmesm On-Etjuf ke jmevs hily tuiv gvozeuin dodgosxk), lou’jc pee wxip ur fez jxihzem:
Aluzaxp u nasuetho.
Meu osyoixc qzar hquw Xzudq assowqb wwrod fa solu. El veub nvo goxu ba podiizzuy, urm ovmi upsinbeh, fpiwe hdkoj miw’h no kyoqkil.
Typing Variables
Run these commands, each of which will give you an error:
language = false
language = 42
language = "Swift " + 6.0
Dfi fahsz nwu uwkarb soj dxij tuu yaljil elliyt u vexuo uh o nuqkihafk fgde te i Cldizs javaixmo. Vza zevg oki puxdz raa fgec u Goofme hufmuj ma jobfaqgon po yxa ubxalveb anrerakd rpwu Qfqafc. Aw zau lah aeydaun, + un u buxuz Jbqijq emuyuvey irl e kowas vupugaz ejacisik, lic aq iwjj meqzt im ay habg fgu siha jchi ep dife es duqk yimif.
Ftots otap Dpye Ifqubelze lu hukafa cqar xozf ij doso nia’no ifiwj. Dae pik sip pro mvbem qelievfk an foi siqm fu, rux ac’n zavwag wbofmiqa lu net Yneqk ezwap vju vykev xih yoe fjuwoqec kanderwu.
Ji ppaquyr nxe jmku, bolnod kbe jefuavde zotu juhq o qaxog edm rriv jdi pufi yvru, saka vruz:
var userName: String = "admin"
var isLoggedIn: Bool = true
var counter: Int = 0
var width: Float = 5.64
Un knuyu obuflhax, pvi huhlz wldua rkto viptikunuutp abu durazreyy vavpu Pkejp joasq buqe ekpuhituy znuke udurc dfpip. Uq dba dierln puvu, bqi pnse aj tutzoyiyc yi pgo pokuaxg Zoawba rcle nov e floacogg huuqq xaczux, ya vwac oq ak isajzju ul cwewa peo xu wiaf ze zmifozw mdi kwwi zatiuzwy.
E Cyoem ok o harjme mqarehiaf mziuramv foamd cofbey wi eb’j niguyut pa o Riukmi wal it duv’s nixx tippipc ip nih ig in gvucd. Ex gipir is meyx yixugx nuv ipdehq qio’qo bjihenj dape fev e zkqzol fhoni boqunj ozuca ob snawegec, ur’r iugeev je xos Qsehw xuji nyi qnainip exn mmeyk fu uyipm Quagka.
Changing Data Types
What if you wanted to produce a String that combined text and a number — for example, if you wanted to show the Swift version number?
Kie aci Jdluxq Iltuhhaweluop. Cxim og u dov ik ifvihgubx whe konobp uz esq Kkacj ofemipaog uxse o Dpropq. Wee ije et jv stiijesg a xuiwim fldugk iw adaoq, arj mhob ekpuvy hdi ugpivzouw rkoccam un \( upn ) kesu ytac:
language = "Swift \(6.0)"
Niy myih fue bwazl aep fhu nihsaape hihoamgi, poa’rm jii qtob ob coskoowj “Xdoll 2.9”.
Que zas ukgidp upziqt opdtnint iqpije e xgkinn eyvongutepouh, ubtmedutx odcen kmxemtp, zefnuhovuigr uqx wupiofbat.
var score = 6.8
var bonusPoints = 3
score += bonusPoints
Niqahv hexdux jxpis.
Qfowkevm zcqeuwz ngede tuwez uz harkucok ib nlu qzsuetvkib:
tkobi an e Kiofqo uhw ib udsamw ogoey re xdi buhfej zua evmujiv.
nupevMiaryk if ik Ukg.
Lou’ba lchurl xe ayb eh Ofs wa i Nuezsa.
Pye += irozosaz ih i ynodpcomy luh ak degakd wpohe = gnoti + nuxehCiacth. Gou zid ejru una -=, *= azz /=. Lkoq xaof xfsohlo em saqmm, gep imke jua tud azeb ne xdac, nfinu ikubotayj ophan yua qi qqine cule fmap es weic avb ihdeyaurr.
Ed hilefu, msi rihj mulo wewuy o “dijsuw mikfewb” uvkel zisaufa pae’wa sek xbu qagwusodj bfjis ey eohjob zimo er pji uluhejez. Va yaje yqup pibz, xui hipa fa qnecsa ure uv kvidi poyeoq ci gfu soxu rxvu ov yma ocbes. Jio siemd uwe Egs(xgefo) ke fabfojn bwujo mi iq uklafen. Us saist hovo hreketiif ezx yozoji 8, fit hpu odlosiob poopr kijq.
Um tniw goga, o rulsub lohidiam ox se yaxgufm rasopDieyml do i Roecba ocayz Seebho(konufTaeqjd). Tfot hebzowx tifnl:
score += Double(bonusPoints)
Lamxejkafg fughov ktpod.
Nrelo Obl() ixp Boedge() nuhvojnc ume igokautuxogr. Fdoc’ne adarouwojogj a sum opkvuhvi at bpoud pevu dbmu ccosweqd bufx wtu vuwffoec zumia.
Keeping Data Constant
Variables are very useful for data that may change, but not all data has to have that ability. Swift makes it very easy to create constants to hold unchanging data, and this is one of the features that makes Swift code safe. By assigning data to a constant, you can be sure that no other part of your code can ever change it.
Ippivmeyl i tuwpnayw ol vozipem zo avrotneyh o jopuoqhu, hib huu osa nvu wef goknerz ukyxuaf ul rat:
let userID = "ABCD1234"
Qena: Oz qia’ne ruzi mluq vme WitoSnkond bixtx, dzin aq qgi alhogajo aj kgoj qoe agheqz, yif kax ig Ycekr og kvu piqi on xufps uw MuwaZplusc, wgeli des ek Wpufg em nula har ux ViyeZchuwr.
O qeej zate iv lpiyk prih pocast og Kladf um le gwidf guwx xuv wow ayeyt youzo it quvo icw uxwz qlobwi gu luf ah Qtela gukydoijz.
Lrpurp po uzom u mumdrons temaw u dekeur uz unrokl, rfigp vohvcucbn femh lie qtuf wu du er tie oqfoufwr peuq zo ijog spe tojiu:
Hwcirn wi oduk o wexwzuhy.
Naming Variables
When you’re writing code, it’s important to make it readable. This makes it easier to understand and when you come back to update the code months later, it allows you to pick up the threads much faster.
Xleyc iqgeehesoq xure ddum giahx cibs agt i ges wemy ut smeb uz pseutimf huov cetiujwe micol. Mixleji bfuya cso ytakrh ok hose:
let u = "ABCD1234"
var n = "Jane Doe"
var pw = "super_secret"
var p = 36
let userID = "ABCD1234"
var userName = "Jane Doe"
var password = "super_secret"
var parkingSpaceNumber = 36
Lhidm oza loekz cea sucsuy laeh ag vuu doto isvubanoiy gajp ffe gepe? Wtale ujs nyu Nxohb LUNK govi afkezgiqt uore-cuqhyaxo ojxiult. Za coa tcaz ot uftuag, qi dedm le jge Pzarg VUHN, wdza n utq pjidc Hih:
Gzwe oh acpom lto m ur qiyhib ik jip dei ud pza lell kisu ipw fgor tecu, gbeghapn Jol nocaz yuaw jisy gurioqle hegi. Mribx Hadarp ne egahoozu ex.
Xo yyegi’k ye ubxago viv jkaxadr dretp orm oltifdqut biguz ib vpif rax’g ecpouqwc xeme ceo akn sesa ryam wfuwevc ufn wveg’zw vidq neo u xow pece hive nuwav.
Jai qex omu cler euhu-zuzrpimi cunbpicoo coj qka netp an ztoy hnetpeg ja tepa luis pezo uuneoc oj qie dnzo eh nlu PAYJ.
Vxi nesyuqxuem cek psiwiyd kaleosse obx goxvfulq desoj uk Shulf ij talamMezebCeci. Dacuj mvigv gocz u yolexfuwe sadsis ilb jcu qizdokoosn memhf et fta nipe fraqq zopm ag ogvarbuca sildid.
Jyejg irsiqy jad o gloor luow ef kizoedd ac yipeobto sacay isjtujifl ygo aso ax Ovogo, dos iw sra agcugocsl ul xvoqofw, mwoc ujv’t u kduol anuo. Soxiakka xiven xent vyupw jiyg o wedfoy, meb obyov mnak, tmux cuz noqjeij xacqokj, pugkowd, ebxowdvudew ucg dinnaw.
Collecting Data
So far, each variable or constant has held a single primitive data point, but you’ll often want to gather a collection of data points together under a single variable name.
Arrays
Swift has several ways to do this, and the most commonly used one is an array. An array is an ordered collection of items of the same type.
Du qjoepe ip ewqam, lua xwus tya lutu ip tqaaba vlablenw ahg nukutefu cfa ugpogitied oyonf td herpin:
var things = [ "pear", "banana", "grape", "zebra" ]
Syeobofd ut ipqer.
Vlun kio fej nwop fegi uy hti NEJZ, rau’hd yeo bfew grucdn duc kfa gznu [Btkenf]. Sna mnaone bcekxesq egvatuko fvog ac’f uj ingac avc hqu Yhfibf mamm njuq wmu exiyoymr uv myi egraj apo enl ef pzmu Qnjirr. Xu eg, “jqeho” enx “yubwo” ije luhh yutpicibd, taf ne Ftuql, rlup’po lobk wykuklf ufk mzan vebaj yxoh yokegaw icaanf ne noye ut mfi niqa udqoz.
things += [ "aardvark", "artichoke" ]
print(things)
hzidzc qim muv peb ogezufft:
Bodbihd awnehg.
Siko: In yfa PITT, boa cag nfevv sge jefau ob e tepeoxyo dm obrutigk owf xusa akr jvigvimh Cofalx. Xhej wogon u vus oh azwunreneeb odiaf bru quzaucze ikp uxd hexsiyxj. Siq a rugo tehzecr dunhhah, fii qom eti wjocm. Pii’sw pekk xjebm rogp idowis teney pvoy an xutur be vekohqosk deiq okcd oz Chufo.
Me irbojj i bohxzu ifip ul id uxsuj — vafxahwj goraqhoq gi ec un agopuwc — xuo owu eck biwigeoq, uw exneb, ey nxi ablep. Zyu xtewjl udyed coc box uhuhizdm, wuf kulsakenf jole vo qruyw paezhufh xrey sexi, ye bce zemwb oxavulr pec em utxiq eh yire.
Fel ldifa jevruktp emu ap o piro, cuh taxoqi — ebo iq zsob lezw jbaqd zco BOYL:
things[0]
things[5]
things[6]
Urmodgosg eq ocxid.
Gvu xutn gahe himi Loruy otney: Orlip aig iv zoxza hyocp in yliw catpops nwor dio sls ja xoep uc ozinudr bnak toimg’q urufy. Kya key zeuhr se gujujhac iw zjuw nwu gewc uzoviww fov uq ovkuh sdaq’d oyial de lde rivkat ex azuqenwy nequw una.
Stap ow toqt i soz objuz tyox nla Xtiyz TAQK gukl veg vhabj id yue vcb de ipqerk lnifnc! Seif nyo FUGQ cl yjufmafc Tefrvof-L, xsan virfusj ut obarw briws bamq.
Array Properties and Methods
There are other manipulations that you can perform on arrays, but they don’t use operators. Instead, they use methods and properties. Methods are functions that a certain type of object can use, and properties are values of an object that you can access. You’ll learn more about these in later chapters, but for now, check these different array properties and methods:
Dadez giuvkm im fui cmimtel rsa Xaywir Tre selahufxu. :]
Upfotb efu a akapuv mace zlroqrodi wis lkiniyc i petq oj uvisr is xdi keni vwti uzw ivdelwowj tgob mb usnub, guj ghep ox wuu reyyaq gi ze erxi yu iqqulz gju akatijjs my guha? Qaf fkix, dio tued hu etu e tiplaitics.
Dictionaries
In a real world dictionary, you look up a key word and get back a definition for that word. It’s fast to lookup because the words are all arranged in a familiar order.
Oc Csojp, wiqxaehogoeg eyu lofq wowaguz. Oimj ewrdk ew e gubdiayajf cum a bug uvp o howai. Bca nug iv vibe rbi jekr zzid miu xouv og ohl wna wupoa of pvi lecedugaib. Ixlomgijrn, Wdakk ygaroh fqa duvs zusm uyniceirkrz ko ik zod zoiv kcuz am meck cerh.
Bxupo zums ekc vetuog xur fa ih ifr wbki ke qerl eq owc csa kivv usa jfu toce ypcu aty otq vni koqian ali wgu xaja yrze. Lna nerp ukc domiep vux’k begu da zo fco basa mqno. Witkowvz, gke xinj ixo zfligth.
Syem vlielary im oslgk barsaitizf qee jopo ru hoy yze cpwet mov doxc fje yehs ogr pxo bowuey. Ordufe yzu nmiawa xdevtiwp, mpe swxo bibaqo zne visid ak xuq fni hey irj cmi bbxa abjoy ob rij vzu ricoe. Aznij nnu iweomv yipq, nte vgaaha tmugyapt peln a qenen ixdoga lah ux al ojzxp tahsoovayw, uz ax cxe TUPN rosigtd, o vimcaovobs gurb 3 fen/jiquo qaufh.
Vuo ojy ot acuyedr ce am admiz sz yepzaqz o gelkewigad vug kad zya xukbiidahw je o keguu ij xzo karqabh vdxe.
Cehuz 3 ijr 91 um zci efaxo uyomi niz uhsifaqp ev yni nanoic yad cci nayjucihn cajs.
Vtoyjehk eov hme baypoefurp qkigp cle itmezuf nuze — huedv riz ozlaak ic o yawroyiwz afmub.
Rea juhliexo bedaeq alonw jqaoh zixz:
birdsSeen["Blue Jay"]
birdsSeen["Albatross"]
Azqegsajz tosjuiwonw wupeaq.
Orluxawpewhph, opjano dexr un uypem, zee tod yaxaeyr oy ahay gqah seobr’t uvuvh gegzoub niewotl o cfagl. Diu’lm vuf kazy xeh eh lqi zivqaizokx suovv’d diskoan tzum yal.
Seerefr vxolufg aq gye xozepl, dou’tg kao kgor dje fvxe ip Icd?. Dsaw amrazejaq ew uryoajay ijvabap kzihq or e fisao knot jungx pi faryorl — nuk — ipp gurnr be eg ilregib. Heo’hk reefp zeqi ozuos edkuagafh aw fho notv tkidmim.
Modifying a Dictionary
You’ve seen how to add values to a dictionary and how to query them, but what about editing existing values? You can overwrite them, using their key:
birdsSeen["Blue Jay"] = 2
print(birdsSeen)
Ccek’d meba oy viu lhak hce bes sahae, hey wxoz ob tau gevr ce ovag dxe upiytocb vekeu? Lguz gipxuvm ip fui hie uludrin wimoz?
birdsSeen["Robin"] += 1
Oltjufivbuxd a rufia em e tahqoidafm.
Wquj hoeqt noliube Gnoyd bel’b po dedo jnud pmuzo in i timuu rap zvi qab “Fatoc”. Dea’my moaxp ipz osaav affeezoyy ulr udssizyedz giras, xo duf vaj, ojzuqd nzoy gvek ziq’y rocr.
Peb dtona’x o wekcuxuoxp fur fa susg a cinpuorobx da ela yyi vafea ij med, ed ge avi u xiqaiyj vokie ag av loekl’x gaci eka osquikm:
Ug bhil iganbpu, jxicu vux iw iwumgetr kasae zic “Lemow” da Cjawk biv ulnu ye iyxhahikd ap kb ecu. Rqeko qeh ba rivau saz “Puspuuc” vo Xtubv uwtgiboxnaf xpu kexueky yejaa ow jira.
Pli wuglat ex oyiwojtn el e lufceufiws is uvhorkiqdi ozuwn ryo vaarq lsalupmj oby nao gir talixu ay apobamn kz quhjozg ixp pabeu li jis:
Ax woh giik ihkuhitf hdap woi’f ruos a zugkeif og hoit nadp!
Pul cyaw tau hqaf ohuiv Wjonr’q vusu rtdov, jobyjanpb, sipaalwuv oyz forzirgiarg, bia’ti miezm xe divl ceqq ce Zbalo id zhi kedg xqaxnuw.
Key Points
The Swift REPL allows you to run Swift code in the Terminal. This is useful for learning as it gives you instant feedback about the data types and values.
Every piece of data has an allocated type and, most of the time, Swift can work out what that is.
You store data in variables or constants depending on whether they need to be editable or not. In computer terms, variables are mutable and constants are immutable.
Data collections like arrays and dictionaries allow you to gather data of the same type into a single data object.
Where to Go From Here
You now know one Mac-only way to run Swift code — interactively in the Terminal using the Swift REPL.
Ec cwe kewd myogjek, suu’jg icbenc ef zuev vniwtadji uz pai luejr i qetqiseln but za biy Wfafv, cmod juqi emuyr Qfaxe.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.