Lizibilitate și flexibilitate
Dacă întâlniți un termen mai devreme Prelucrare, dar nu știu ce înseamnă, atunci vă puteți gândi la ea ca o tehnici exotice și specifice, care nu trebuie să vă faceți griji. Dar, de fapt, este un concept Prelucrare foarte simplu, care rezolvă problemele familiare cu argumente funcționale, dezvăluind o mulțime de opțiuni flexibile pentru dezvoltator.
Ce este currying-ul?
Pe scurt, currying-ul este o modalitate de construire a funcțiilor care permite aplicarea parțială a argumentelor funcției. Aceasta înseamnă că puteți trece toate argumentele așteptate de funcție și puteți obține rezultatul sau să treceți unele dintre aceste argumente înapoi și să obțineți o funcție care așteaptă restul argumentelor. Totul este simplu într-adevăr.
Această funcție așteaptă un nume și un mesaj de salut ca argumente pentru funcționarea corectă. Dar putem să o rescriem folosind currying imbricate, astfel încât funcția de bază va necesita doar un salut și a reveni o altă funcție care ia numele persoanei pe care vrem să salutăm.
Primul nostru curry
Această mică îmbunătățire a modului de scriere a funcției ne va permite să creăm o nouă funcție pentru orice tip de salut și să trecem această nouă funcție la numele persoanei pe care dorim să o salutăm:
De asemenea, suntem numiți direct funcția curbă originală, pur și simplu trecând fiecare dintre parametri în paranteze separate una câte una:
Vom ridica totul
Vestea bună este că, prin a învăța cum să ne modificăm funcția tradițională și folosind această abordare pentru a lucra cu argumente, putem face acest lucru cu orice număr de argumente.
Avem aceeași flexibilitate atunci când lucrăm cu patru argumente, ca și când lucrăm cu doi. Nu contează cât de profundă este investiția, putem crea noi funcții pentru a felicita orice număr de persoane în toate modurile disponibile:
În plus, putem transmite cât mai mulți parametri doriți atunci când creăm variante de noi funcții care sunt capabile să ia numărul corespunzător de parametri suplimentari, fiecare dintre acestea fiind transmise în paranteze separate:
Și putem defini cu ușurință variații subordonate:
Realizarea funcțiilor tradiționale
Puteți vedea cât de puternic este această abordare, mai ales dacă aveți nevoie să creați multe funcții personalizate detaliate. Singura problemă este sintaxa. La crearea funcțiilor curbate, trebuie să păstrați funcțiile returnate imbricate și să le apelați cu noi funcții care necesită mai multe seturi de paranteze, fiecare dintre acestea conținând propriul argument izolat. Acest lucru poate deveni confuz.
O modalitate de a rezolva această problemă este de a crea o funcție de curry rapidă și murdară care va lua numele unei funcții existente scrise fără returnări imbricate. Funcția de mapare trebuie să scoată o listă de argumente pentru această funcție și să le utilizeze pentru a readuce versiunea curbă a funcției originale.
Pentru a le folosi, vom trece numele unei funcții care ia orice număr de argumente, împreună cu acele argumente pe care vrem să le prepolim. Înapoi obținem o funcție care așteaptă argumentele rămase:
Și, ca și înainte, nu suntem limitați în numărul de argumente pe care vrem să le folosim atunci când construim funcții derivate din funcția noastră curbă inițială:
Currying serios
Funcția noastră mică Carriere nu este în măsură să se ocupe de toate situațiile, cum ar fi parametrii lipsă sau opționale, dar nu funcționează semnificativ, atâta timp cât vom adera la o sintaxă strictă atunci când trece argumente.
Unele biblioteci funcționale, cum ar fi Ramda, au funcții mai flexibile de curry care pot separa parametrii necesari funcției și permit transmiterea lor individuală sau în grupuri pentru a crea versiuni curbate. Dacă doriți să utilizați în mod activ currying, atunci acest lucru vă poate potrivi.
Indiferent de ce vă decideți să adăugați la arsenalul dvs. curtau dacă preferați paranteze încorporate sau mai productive funcții Carriere consistente de denumire funcții curried va ajuta pentru a face codul mai ușor de citit. Fiecare funcție derivată trebuie denumită astfel încât comportamentul și argumentele pe care le așteaptă să fie înțelese.
Ordinea argumentelor
Când efectuați funcții, este foarte important să luați în considerare ordinea argumentelor. Folosind abordarea descrisă, aveți nevoie ca argumentul înlocuibil să fie ultimul dintre argumentele transmise funcției inițiale.
Considerarea inițială a ordinii de argumente va facilita planificarea currying-ului și aplicarea acestuia în cadrul lucrării. Și luând în considerare ordinea argumentelor din punctul de vedere al probabilității schimbării lor este un obicei bun atunci când se proiectează orice funcție.