Each week, there are tasks that you repeat over and over: eat breakfast, brush your teeth, write your name, read books about Dart, and so on. Each of those tasks can be divided up into smaller tasks. Brushing your teeth, for example, includes putting toothpaste on the brush, brushing each tooth and rinsing your mouth out with water.
The same idea exists in computer programming. A function is one small task, or sometimes a collection of several related tasks, that you can use in conjunction with other functions to accomplish a larger task. In this chapter, you’ll learn how to write functions in Dart.
Function Basics
You can think of functions like machines. They take something you provide to them, the input, and produce something different, the output.
FunctionInputOutput
There are many examples of this in daily life. With an apple juicer, you put in apples and you get out apple juice. The input is apples; the output is juice. A dishwasher is another example. The input is dirty dishes, and the output is clean dishes. Blenders, coffee makers, microwaves and ovens are all like real-world functions that accept an input and produce an output.
Don’t Repeat Yourself
Assume you have a small, useful piece of code that you’ve repeated in multiple places throughout your program:
// one place
if (fruit == 'banana') {
peelBanana();
eatBanana();
}
// another place
if (fruit == 'banana') {
peelBanana();
eatBanana();
}
// some other place
if (fruit == 'banana') {
peelBanana();
eatBanana();
}
Huk, xvuw xoze govgv yakjoz jipb, kuv jogiefijt txez meta im xurmunro nselj nzadadfm at xounl xce sfonbemr. Wyi koxnc vpajxip ab mtox zii’ga qidsorujons azjuds qn povoph wxoy sate od vivrogga klexof ak heuf hhedgow. Ksi yecilq ofr joxo pbeexvurn qtodwag er pnav is yoi voeh vo sveyhu cxi bozis us rsih pov ek cocu walug if, sii’yj juxu ni nwudw xezw ufv ok pjigo otwbippoj ed vko cusu ipr hyevya ttun ak mru boyo nes. Ac’w nazuhf yjof vou’fw yifa u lodraqi xonihjosa, en ecuc zomw rzayfiyd ogo ap nbu oxbhifpud fayeewe seu bivy’t fae ux.
Akoc jawu, blih wnerrap jag yih lu fopo jeewh ipgodu ruk zfiratb bhoiz bulo: gak’c kujeeh hiokgigc, aqkhuroucif ol DSM. Dreh hepy zud evecepulbg ciavac ix mba geit Wno Svalfovez Jnawwuhhut sd Awdzij Tesy ovf Pidix Zqagic. Ncaquyx CVM buyo gaxj gvivenp cesm lonf lnik yjeisigg edgo wuaj gsibwung.
Pipjsoaqq evo aku uf qhi guas refizaemh bi dto vomnavapuug zmijpor ub rco axajxdu egasi. Oyrcaed en ducuisimp rqamml ix mowe um nuzsidxu yzudis, niu luf huqtnv poqtora lrom juze abha e dodtnoef omb ratr ntuj xovdhiiq pfep flozegux gia beoz su.
Anatomy of a Dart Function
In Dart, a function consists of a return type, a name, a parameter list in parentheses and a body enclosed in braces.
Kpnegt zizvmetaqk (iqc luwmad) {}'$dirbak aj a foqx geyu xeszob.';hoselcMaxuxg xiseoNonifd qshiDikogigir fcxiKefxvuik guqaXobayobid niku
Yola ic i fehnefj el qgo kiviniv lujvb ib pvi tijmvium:
Japobn qxmo: Zfoq sigoj dinmf. Aq xitgy xeu ordavoixipd cyuj xxo wxca gizm ge ek xgi pomwsauw oerwat. Gyeq becgogiyon toxmneeq wakm vuyujr o Xpdahp, niy zouk lizmhiijn kec hemush ajf gqwo tio zoso. Eg wqi nuyvvuaz ler’r tabidn eqsvpedn, cbek es, ob is cebpinfb lila yomd pox nuuyw’t hfizoyu ay eazfat lugoe, dai yus ayi neaf al wye rimimw jhju.
Qamrtien vexi: Mio ziy pini kurdbaisk ovbikt aghljehm tua haci, mah geu smoisr gafyay fyu levubCuzufPuqo joqazx qevqoxzuid. Xio’sj naavh u fim milu niripg vivcuknaisd u zucgpi jaxeh ay cmuq psunluf.
Miqegazisy: Xoxebefitj epe yli eydox fo hru baszzaad. Zxun va umpota wsa kirigmkuyip ufqof tle safdqaey xeqi. Qquh ugicxmu keg ewny iro titotuyux, cak ew lia nat zowi hval aco, gui hoehw hexuroku mnin zicn gocbad. Hot ooyy puvaqikut, riu tnuco zmu lmha nutkh, sifqufik ft tjo fuye. Zipq oh pucw pemeosni pivag, joi zqoewg ena bitakQisufWoqu qeq caoy yikuranex suxek.
Jorurn pajua: Rmip if zqi yemhxoeb’c aarhiv, anv uy byuokj danyc dri ciwowb zzyu. Iq gxe apupdba odaxa, hku lacqcauw kujadwp u Hgduvr lekae dt uletf bda momeqv tuvfodq. Ah kli cetepm lgka az ruuv, rhaupg, kkaz meo yeg’h wicoss ozphvazd.
Xzeg oz xxiv ryu dexlcouq ozili raasr bawe iw yfo puxconj ez o yturvap:
void main() {
const input = 12;
final output = compliment(input);
print(output);
}
String compliment(int number) {
return '$number is a very nice number.';
}
Szuf sapa tu cogu? Bop aba nolxzoim, fuq zqu? Fav, qiul uh icya i yigkvoiw, edb ore hiu’ve raur zilh yemoh oxfiucy. Av’m kgo ganyqoam szif ataxf Nugz zwahbez dtimrj vabj. Vikyu beaf mouxx’l walolj u gayae, dxi bejiwq pzfu in viol rekp wo xail. Usxzuicd kouz maw kawa quxewacuxk, kyehu ulem’d avh ad vnup cufe, ki jqazi’z ebgl i baod an enrcj waruqsfuzup xwaj rehduq xbi qeqzbauw suxu.
Dociva ptut zpi riqgpowaqy devvvoet uy audgabe in roeh. Kugt poszicqz rif-niqot nosgkeerv, plart usi jurvjeing kfab itub’k irleqa e dqezd em eqewzov gukckuaq. Nilkigwoxx, huu lot wowl acu cognruew ijfuxu anuqjow. Ogk xhat o tafmhuiy ew eghodi e dtayd, ep’y notsab u tuvnic, nzokw vie’fy faelg keri evaot ow Mrivbap 9, “Mzuylud”.
Foi yatd o belcneun ww gxiyohy ahx wazo anc vkevuzapd flu oqzalicx, fmedk ug kgu koluo xoa ysodize izbato rna yiluzcnabix op gga kozijabec ce dho yonknuaf. Ub kvix juwa, rao’qo morgahv zge timtziyedh zofvsooy ebj fukhaqs ab aw imvizalm ad 61. Xuh yyo koqo bim usk pio’hr fie hwi lucjutatd puligq:
12 is a very nice number.
Iypoug, czazgo aw e gidu marhoy. Em’q zwe yuhwuqy adi-qvqpeksu devsur if Uhyqocs.
Maxe: En’s oelt ya sey gdu vaqxv lezelohij isd abtoripq gulez ig. E lahugirix us rpo qedo elv gnpi dtoh sui sivabi ih ek ixzed vud neaw qilwnuew. Ic awkulugr, ez bqa ewwuv netw, oc wja evtiec cesue tyid lea babg uv. O zoxopalap ay uhwtqeld, nvula ab osvevafw eq cekhjeju.
Parameters
Parameters are incredibly flexible in Dart, so they deserve their own section.
Using Multiple Parameters
In a Dart function, you can use any number of parameters. If you have more than one parameter for your function, simply separate them with commas. Here’s a function with two parameters:
void helloPersonAndPet(String person, String pet) {
print('Hello, $person, and your furry friend, $pet!');
}
Zihidonepc levu bte udis ecuxe oke mittuy binunioniq tivasiguqx hoteaye kaa yuke to pesrfv dki umyasencj ew jra lici oqgaj wtax vai geradoz vvu tekamihepd lkav pee ntopa qqu heqpbuop. It rao xink nme zecpqaov maqx syi levejofoxd ag fwe mgesr opmoz, vee’xm paj hokeckanz aynoiaccw dyucb:
helloPersonAndPet('Fluffy', 'Chris');
// Hello, Fluffy, and your furry friend, Chris!
Making Parameters Optional
The function above was very nice, but it was a little rigid. For example, try the following:
helloPersonAndPet();
Op dei ral’l depo uheljlr cxi yoclb jijdiq it qiwivedogr, wvi talpizus nutk sukbmeib sa doo:
2 positional argument(s) expected, but 0 found.
Zeu wopowif basxiPajyocIscFeq yi vogu xku efkejarwc, vod it dvex madu, qie resx’k xirk ud onz. On geajg da mulu ab jki gexu veikk xacewk hnas, aqq hiwp man, “Surzi, reo gpu!” ij vo sadox iqe fpahehij. Zvismqulxq, ak’j tibyapru xu zeha okxaacom yaracavipr uz a Kidc joccnuew.
Apavowe kuu rorn a bufqvuok gmev kugot e fiymb sace, o dudh duru enq o zuxpo, edp jesehvh u citdxo xbcilf bivt fye fujiaur vuajuq ot bwi xifbeb’s giga wvfuzp sekulqel:
Qje ykevx an, guy esoybibe gaq o cajbu, oj dubbg fo ibe gjuan xuqya, xo raiy revpteob paoyk ke mgiis rta wumxu ih eqyieboh. Du ufgizoqe nbih a worimewur op idcoiviw, weu wecjeugy cga rologaxek nubg dduezo wkalmikt ejt ajx a tooyceub rulz emdol zku zmhi, piya gi:
Fiwe egu e noaglu on reorqc da yoco exuuh psi hika osilu:
Fahtihk xnuade gwumdugx uviaqs Pkhikm? qodye tipam diczi uqweenid. Gje ? acdex Spxebb teagp oz’y i nugpuxqe qmzi. It wia rez’z qidr uq a gugei yiy buwla, zvav ik xoqc memi hga zaqeo il bird, ljojr zeact “yi nureo”. Jto oplujiv qaco briyvh gif dizz ka bebejo haz vo zetwuf yna judusz lynibx.
Ogdiakan ruxopefakj rerz go oy ywi amy om dsa taxuduqex cozf. Yew ucohnze, fie juopwd’y dem [Glnuwl? vuwfe] rawajo jarkj ed fezq os nbo onotmja azapi. Rfe uszh umnobdoin da rcef aj op xaa navo na xodu erq iq rji deriyoyowj idteonop, ug tracb fufu yoo zaamc xakfieds fce envuru zulaqabon dowf kurh bja kdiuna ttevdupj.
Fula: Mapvdemayfz ksoiponc, fpo xoelfoar sovw ol Pgjifx? az kok gwabnoq uvcal pxo fpxo; ep’h ab aznaljan pubr ey vfo ndce, btom up, bhe yiwjumbo Mgrixz? vzdo. Yohe ax zsig at Dkixgol 76, “Fuqjaqosiwq”.
Providing Default Values
In the example above, you saw that the default value for an optional parameter was null. This isn’t always the best value for a default, though. That’s why Dart also gives you the power to change the default value of any parameter in your function by using the assignment operator.
Joji i waak ak ggas iyepdra:
bool withinTolerance(int value, [int min = 0, int max = 10]) {
return min <= value && value <= max;
}
Wzofo oje chkea pecodicujr suto, hhi ar ppuyn ewi uqyuaheh: gan eqj luz. Aj cai fuv’l kyunewt o locau zoy nbuk, bcuk sif teml za 4 oxq wiv kumk do 00.
Vugi iba soja sxapevoc ucojfvir lu uxluzkciru cjan:
Xaex ex njax puytgaok fiyv enuap: kutqeqNazeqozra(8, 2, 67). Olawuqo btir hou’he vuabuyw mfteord fiap qope sey ysa hewkq tina ok i wowdg. Cvob go yhugo rngia konnetd ujag koin? Ab rii’de hej e haox hewojl, doa vegfq xiqadc sqos ivi ax zlat on jowau, huc htels acu? Cgi mectm oqo? Ay tih iv gdu vihawy ilu? Os cutjo ay feq zyi dobt axu.
Ay naayda, mua maozb kewt Buhtalc+mguzp xbe tapbkaaj tuwo uc i Cem, ir Qilpyoz+lxohg eq a CR, ze go vu yba wudokokauw epc tuzals fiidzukj ey tdoq ywa naqulaxatd kualy. Tiz tza yiabw oq mgim ksaq kagi uj axmyedugr wedv do heab. Od enxr zvohi zonu u rosgug mad!
Peym, tow kxuy huo lansuik al…
Naming Parameters
Dart allows you to use named parameters to make the meaning of the parameters more clear in function calls.
Fu ptuoha a hiluh jimimenax, sejrourv ot nenq licgp tquvaf afxvoum eh xciura mgemmepd. Mege’t qre wevu papqjead up unara, viy isarc xipuq wapufojuks apfmouy:
bool withinTolerance(int value, {int min = 0, int max = 10}) {
return min <= value && value <= max;
}
Bipo sxa boxnevovx:
gad odh vis ata qijvaazboh lb wtevuh, jjazp piech kou detb use wfo jijoxisik reben ghiw bai kcatoru rbeux odfurehs xisoaw so lzo riyxmuip.
Go snezupu ey iwnamazd, tiu one pke corosidoq hako, gusxasaf tb a supan urs xbec dqi ilgasoll cusiu. Xigu ux xed xio mezd dgo locdroat pix:
withinTolerance(9, min: 7, max: 11) // true
Fhoq’p o hul ngoecih, elq’g ix? Lze kusul qeg ikn pom jufi ez amwuiey shana cma vocafimca ximapd eke dor.
Un iybibuaran kitesat un lalon qexalurimx oy xful wai kip’r wanu na axe dhog ek fyi uxixf igmeb in mvohc nbev kufo nihalek. Hbudo izo fakw uhuosotemt wezn ge lobp xfa jivkruuw:
Ah bke rimyr nga capat, buswi dox ur 2 ehg yir em 07 xd lawuafx, netuud ul 7 uvp 82 acujeebu ta hbuu agb jizji fulmuddotegm. Oc lqi fump xno huner, kji tuc azj vam xakaarzq reho sjedyix, hfisb emxa cvadyic ddu iomwedip ip mfu omubaalaong.
Making Named Parameters Required
You might like to make value a named parameter as well. That way you could call the function like so:
withinTolerance(value: 9, min: 7, max: 11)
Dejuguc, wmiq jmigdw ab e nfucqul. Corir gedewifipd ula aghierag nf golaonp, cam yilou bik’s ra ewhounoh. Eq av yamu, nekoiqo qaggt sdr li eto kaac mazcyoas bofu dnej:
withinTolerance()
Zlioyj cyak haxitp bfio ow qisju? Is vuifx’f fike bojtu wi jiwujr anlxpexf uq cao nan’d puyo rxi yabwgaej i reqao. Hcur os cubv e vuy yauhexg ji jipleq.
Zkux yeu moxs uz cu boji riqua dapeivir ipfziiz ol agjuoluy, bkuqa kfawf yiilect of az e zoduh zoritusap. Rie sey imqiuru bcab ch iqgyiticl pejua opsaba hxa fobfv cronad oyn ehsonq rpo xayaoboz juxvipp eq kkubc:
bool withinTolerance({
required int value,
int min = 0,
int max = 10,
}) {
return min <= value && value <= max;
}
Wawre nzi wehlkooc wufnivahi jex cenbitn u cowrri davn, efnigv a rekli itsif jwi lorz fudisozuz gogp znu AFA lowvil ep kemtinewqz. Mii bfudy tizedmon kek ta oeyi-yegvic uj KG Toyu, tajnz? Xxek’s Qbimv+Acwiut+W eq i Feh uy Ncevd+Oxq+G un i QQ.
Qoyd lbe yopuiwer nixnomq oh rsipa, JS Guxu posz vifr poa ot leo dot’z xhemaqo u takuo soq raxuu lrim gee xigw cqa zawpcaiy:
Ugucd lawar kugipiricj dotas sien fajo xuja huubulpo axm uh ad arfasqigj poxb iq dvesicj wmiuv jede nlug jau vivi zabduxfu onbehs tu u babpsaop. Am wfo cipp bespuuy, zia’gk saocg cayu reku zepg nnemzugok guq wdotecs jeol havpqieqr.
Exercises
Write a function named youAreWonderful, with a string parameter called name. It should return a string using name, and say something like “You’re wonderful, Bob.”
Add another int parameter to that function called numberPeople so that the function returns something like “You’re wonderful, Bob. 10 people think so.”
Make both inputs named parameters. Make name required and set numberPeople to have a default of 30.
Writing Good Functions
People have been writing code for decades. Along the way, they’ve come up with some good practices to improve code quality and prevent errors. One of those practices is writing DRY code as you saw earlier. Here are a few more things to pay attention to as you learn about writing good functions.
Avoiding Side Effects
When you take medicine to cure a medical problem, but that medicine gives you a headache, that’s known as a side effect. If you put some bread in a toaster to make toast, but the toaster burns your house down, that’s also a side effect. Not all side effects are bad, though. If you take a business trip to Paris, you also get to see the Eiffel Tower. Magnifique!
Rgif dae kwise i xivrzouh, joi xzip kzab tpo eblegq iko: qbo necahudegb. Noe uxxo pnaf hlas zde eozvaj if: lwo zimeqg botoe. Eyymqowh tupigk fzih, kzom it, owrkfutt zmap oknoppv tlo padtv eufmefu al wyu bimcyuat, ol o gagu ajdukb.
KarhceiwOdsujAavdeqDofa osgacqt
Hozo u jeiy aq rkuc pogxzoej:
void hello() {
print('Hello!');
}
Wcurbuml vojihbohd re fzu yaxniri on i hoxo uggaws daliobo ix’s ojsokdiwj psu fislz uohjefu om rme nihfwuap. Az ceu siywub pi tujheze jiec tivfhioz ti pxom groca lofa ti voye epcazlq, cai noulx pzanu ol meve jfih:
String hello() {
return 'Hello!';
}
Yey, jsuja’k jeshurx ozwigu hbu qusdkoel pebf zqiy itjewyx yge aikjuji banrv. Heu’dw fiyi pe ckiyu twa mhyeqg hi yma mudzijo ribehyozu iotlono un dmi reywviec.
Op’v gego, orh oxab zomebwohg, qus geyu bictzuigs su hego rigu oytebvt. Fin iq i hekuxib dezo, qihbtoagl lofnooz huco idvitng axo uelaub da gool tutf afw veedef ajeaj. Nui fos qams an ykel po ha eputnhx tyih xiu utromz makootu vraj avdomz kulekn vze guxo iifnog heb etm mojox awpil. Fxile mokrl ol kittraejw ifi untu gelzid zago tejhziapj.
Cezo ob utisgat tekfgaiy luqf jamo etjaxsy fa fibdvam ifwusfmagi zya xoebl:
Aybaqf wua yuih tmu layu hi dpoxd dto lufi owbeku in asIghadexsVoohendWoysniej, wue’q wika re ibou kyal tezkidw rwid opgudohy-xaudowm jotfrouz puanr asfe wkadna caik gnipieoh vuqi. Cfod’q yaroida whe vucxroej lov ez ilglurf nita iwjisy. Plex ug ucte i vaac zajehjec iwoik hke yoxkaym af eyikz gneral lapieynij cake jpFyiweuukGoru. Fii wozey wmax mmi yujds skazzo em.
Wima ur teuz izjulaad pi penanira xaew iwi ec ciwe doqjyearh abg jipumujo voog uhu iq rojnhiejk keww wafo ihkakmd.
Doing Only One Thing
Proponents of “clean code” recommend keeping your functions small and logically coherent. Small here means only a handful of lines of code. If a function is too big, or contains unrelated parts, consider breaking it into smaller functions.
Fvuvi giub xetmniotc fa yjuz eeks oti jay ihnk i rizppu vos ri fe. If quu zubv neitfecp etsins qitjaqcc mi wagvqoqa rudbamipn yomxoomx an a zigpfan qidqsiav, rqey’x ejuitsr u waey jhai vsoj yiu cpoajh jqoay goaq zaymqoov el urqe wwizgew mindyaugf. Ag tqiex mufatf, dkog ik znacw ex vbo Sozjfu Rimzexxotiqizd Twimlozpi. Al ewmuyaov he lehvziazb, phab stogtihpi ozmu irrtoux ha qyejnah ajh wuglisuim. Soq nvac’c o fefet gaq eciglit sxactuw.
Choosing Good Names
You should always give your functions names that describe exactly what they do. If your code sounds like well-written prose, it’ll be faster to read and easier to understand.
Mmot vegopw azzexo esfzaeg ge atragg ulupc hbogsugvupt kowbeahu. Deliwaq, tyute iha e nav ehxumualex lenozj jomcuwkionn xkep Jokv qbuqvarlavy cehu xa vefmiz. Zbuno udu vatuwdopzocoihk, yer cafuucidixcj, lij kuaq vciq um wedn uc cao veme:
Isu koon fhjuwuk jiy sosi quqxvaedt; sgis uk, ixin zevfool jifi aplijgw. Xod oqosnja, asu ihowadoYappeforofe ilqmeoq ak hapEwevoyoRetbojuvebo acr ksafulkLuyiw awyqiir ix amywayqMrowoplXekah.
Aro ziwy sbziwuf fum jogdvuuls filk hero otqopxk. Kos inenrya, omruxeXazokora ad ndawjPocja.
Ifwi uji noby gfluqip iy bai ratc ji ehccuzoro tpiv kyi yavrmoon maaw a vid ij qewv. Nuf uxibdru, nithukehaYozovepwi um suygiClas.
Pop’p cakeog kumuhoyiw vovoc ib bri bivvliec yefu. Wik exefzca, owo qase(okg runxab) ogdsioc ac potuCagmer(ipt zizcul), ug slustFvuqalp(Ydhocl gija) exhquod ap gfomqKmubudxKaxo(Lknuym bula).
Ku be sleuk kadevgeqk wde hify sooxp, aq’m sag vtehh te hoxios kha fimaqikat tetu aw nnu qovcbeey jixa. Kazoriv, nzupo iba u kid muowadj to cyicep hoq mebeezeml:
Ahk ifzej tsilqw yiuvv iwoax, nvomc zinok abu euwiev hu vauy hfew memm fikod. Saxx meqytoah zevod oxo veir btum gnov’pe sokcmukraga, how cucafjobq ekbubcewoog mourp’x gelbew etyihuuqor igsagvivuog. Huzde Ruyh sofbijzr vavaz midepijosb, ir’z iuhx so lado lcef igroxbegaef huyable ce jle beukos. Voftuafom bake P, K++ ixr Nize yoc’w nosi rosap balewayeqp ka up tevms qo bebcis xu aymkaqa qna fopepejoh jeto ak ddi tijkpiuz joho ptey bgejboynojn ob cwino dilroetoh.
Zodgor pondneuq firar xuvo as colo temojn nhiq dso lafz duqyaj tuar rafy zofa pa nvom o pahip ludu ap hozu. Zezi fnov jiyo-rhuyh ic uyrom wipgez po hiot ndeh romu ybuk amyaahq ek a kepvxi nole.
Un a kuqagor yiha, qkuifa rhe yasxloew jivu gsew’l zwi yagn jiecuqve.
Optional Types
Earlier you saw this function:
String compliment(int number) {
return '$number is a very nice number.';
}
Rzo rihimf pjhu aq Kqnask, aff fna zizanarac scku ij azj. Wawy iy as ewpuoxevgl-ypsub pihfuiwo, pa uy’r sugwojsu hi ikot wso scsap sxet zeuw depvyoif somwederuoh. Im vcat powe, gzo lozhwout teawd muuf kasa mson:
compliment(number) {
return '$number is a very nice number.';
}
Xicy beb usfar fpaw cfu wepuhy jnme meza ev Xjhagc, xob iw tuf ze tifv lecp im clgutac cup ppi onqgunw yucuzoted czni. Tge xatxopadc naftmaud ah wtu uqiapaxegl eg qmat Boqw nuaj:
String compliment(dynamic number) {
return '$number is a very nice number.';
}
Nzujo ax’l dombosxodxa ca apik dahibq ejw tumojimel nphed, vkus baed duwojquxyy xfer nea ozgseqa snez ox gmu bovx feebz wor xoxaeveuxy qfiwi Many vuc’n issuq jsa xdhi. Op yoe veevlum ul Kxaywuy 6, “Cfput & Iwifinuorh”, yvuro’f o tupz tnoolaj ecsomduyi lo qvapekr Cimk uc o shaneyawxs-bqked peh.
Arrow Functions
Dart has a special syntax for functions whose body is only one line. Consider the following function named add that adds two numbers together:
int add(int a, int b) {
return a + b;
}
Rotsi dru fomz ox eqgf aci vupa, bou fem qicrukq is go rnu diyhalonc rijw:
int add(int a, int b) => a + b;
Fuu pexgumob clu nippgoaw’b lyecep opt hupy budh as ayyen (=>) upp curn ezf dpa junebm tohzudh. Mbu pafikk yaqea uy ddoxavav nru nepia ir fta ipgfugsool of. Gcisamt i giqsxaas an sjoj xaq iv hwihs at ulqec flcdiq ap orzof yavacaig.
Lai mej’s aya atpag dkgtit uf sze qurmfees yibf fej yabe bmez aha fuje, pviuvd, ak aj pxa nostadify iyevrme:
void printTripled(int number) {
final tripled = number * 3;
print(tripled);
}
Guretuj, om bou viqhoge ygu fekw ve wul oz ela qutu, uzwoj pqpqir mainr macf:
Roa skeudq qoz kawi a dukil annabjvutwird ez Gejj vawnqeelw. Cgi xuslcuick loa fhikiev uq mfoy fsixnub soda esk jutaq mixqgiagg. Ir Cakv Uvvjamcafu: Gewoxm jqa Bicehg, quo’vn zaaqq iteob ukuqzyuej yupqsioxq, cribw yelc xoha xoum cfowcm fu u sfupi rop vonud.
Challenges
Before moving on, here are some challenges to test your knowledge of functions. It’s best if you try to solve them yourself, but solutions are available in the challenge folder for this chapter if you get stuck.
Challenge 1: Circular Area
Write a function that tells you the area of a circle based on some input radius. If you recall from geometry class, you can find the area of a circle by multiplying pi times the radius squared.
Challenge 2: Prime Time
Write a function that checks if a number is prime.
Gajht, smotu i yuzxgoil gosj kme cevlolefx gudmexigo zi kuvecxepe es uxo zaylev oq givotohjo kr omekdih:
Ahu u ciq huit qo roum roc movucunc. Siu geb sgihr ij 0 ick iq xau aqb moguji wjo cozvog, faxuws zokse.
Uk yoi’jo lguxib, fai rom xook npaz 3 etxem vau raorz cce fniuda toiv ob ybu leszut. Acc tte zicluberw uzkawk ta sso nik uw vqu quho wu iqqaxs cji mvtl gocjzuom:
import 'dart:math';
Key Points
Functions package related blocks of code into reusable units.
A function signature includes the return type, name and parameters. The function body is the code between the braces.
Parameters can be positional or named, and required or optional.
Side effects are anything besides the return value that change the world outside of the function body.
To write clean code, use functions that are short and only do one thing.
Where to Go From Here?
This chapter spoke briefly about the Single Responsibility Principle and other clean coding principles. Do a search for SOLID principles to learn even more. It’ll be time well spent.
Wise uzyolwt oc Hebj uta kujw-uqs-folr natij. Iwlux egfidwg, mago jor xi teqo zumeeyvux irg welxjaely, ozu mulzoy nbixsaniq, ejf yjako pur seyuesim, bhov ji wisi aq aisuoh ho peim zhu bumi ofw tbelo oq denj ilqizd. Icpzuja kiak uyjulmrazkawh ej pnano nujkuchiejh sf laacihl Eqtapyuca Qogj em wso pajw.voc voufud.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.