de Rick Henry

Cum să utilizați aplicația parțială pentru a vă îmbunătăți codul JavaScript

Folosirea acestei tehnici funcționale vă poate face codul mai elegant

Cum sa utilizati aplicatia partiala pentru a va imbunatati codul

Programarea funcțională ne oferă tehnici pentru rezolvarea problemelor din codul nostru. Una dintre aceste aplicații parțiale este puțin dificil de înțeles, dar ne poate permite să scriem mai puțin (sună interesant, nu?).

Ce este?

Aplicarea parțială începe cu o funcție. Luăm această funcție și creăm una nouă cu unul sau mai multe dintre argumentele sale deja „setate” sau parțial aplicat. Sună ciudat, dar va reduce numărul de parametri necesari pentru funcțiile noastre.

Să oferim un context în legătură cu momentul în care am putea folosi o aplicație parțială:

const list = (lastJoin, ...items) => {  const commaSeparated = items.slice(0,-1).join(", ");  const lastItem = items.pop();  return `${commaSeparated} ${lastJoin} ${lastItem}`;}

Această mică funcție include un singur cuvânt, lastJoin, și un număr arbitrar de items. Inițial, list declară a commaSeparated variabil. Această variabilă stochează o matrice unită separată prin virgulă a tuturor elementelor, cu excepția ultimului. Pe rândul următor stocăm ultimul articol în items într-o lastItem variabil. Funcția revine apoi utilizând un șablon șir.

Funcția returnează apoi fișierul items, ca șir, în format listă. De exemplu:

list("and", "red", "green", "blue");     // "red, green and blue"list("with", "red", "green", "blue");    // "red, green with blue"list("or", "red", "green", "blue");      // "red, green or blue"

Al nostru list funcția ne permite să creăm liste atunci când dorim. Fiecare tip de listă pe care o creăm, „și”, „cu”, „sau” este o specializare a generalului list funcţie. Nu ar fi frumos dacă ar putea fi funcții proprii ?!

Cum se folosește aplicația parțială

Aici poate ajuta aplicația parțială. De exemplu, pentru a face un listAnd funcție, „setăm” (sau se aplică parțial) lastJoin argumentul de a fi „și”. Rezultatul acestei acțiuni înseamnă că putem invoca funcția noastră parțial aplicată astfel:

listAnd("red", "green", "blue");    // "red, green and blue"

Nici nu trebuie să se oprească aici. Putem realiza multe funcții specializate prin aplicând parțial un argument pentru funcția noastră de listă:

listOr("red", "green", "blue");      // "red, green or blue"listWith("red", "green", "blue");    // "red, green with blue"

Pentru a face acest lucru, trebuie să creăm un partial Functie utilitara:

const partial = (fn, firstArg) => {  return (...lastArgs) => {    return fn(firstArg, ...lastArgs);  }}

Această funcție are o funcție fn deoarece este primul parametru și firstArg ca al doilea. Returnează o funcție nouă cu un singur parametru, lastArgs. Aceasta strânge argumentele trecute.

Acum să ne facem listAnd funcție pe care o invocăm partial trecând în a noastră list funcția și ultimul nostru cuvânt de asociere:

const listAnd = partial(list, "and");

Al nostru listAnd funcția acceptă acum doar o listă arbitrară de articole. Această funcție, atunci când este invocată, va invoca, la rândul său, trecerea list funcţie. Putem vedea că va fi trecut „și” ca prim argument și adunat lastArgs după aceea.

Acum am creat o funcție parțial aplicată. Putem folosi această funcție specializată de mai multe ori în programul nostru:

listAnd("red", "green", "blue");    // "red, green and blue"

Mergând mai departe

partial funcția pe care am creat-o este de a ilustra modul în care funcționează aplicația parțială. Există câteva biblioteci JavaScript funcționale excelente, care au acest utilitar încorporat, cum ar fi Ramda JS.

Este demn de remarcat faptul că, chiar dacă sunteți nou în aplicația parțială ca concept, există toate șansele să o utilizați. Dacă ați folosit vreodată .bind() metoda unei funcții este un exemplu de aplicare parțială. Este o practică obișnuită să treci this în legare pentru a-și seta contextul. Sub capotă se aplică parțial this și returnarea unei noi funcții.