A részleges alkalmazás használata a JavaScript-kód javításához

Ennek a funkcionális technikának az alkalmazása elegánsabbá teheti a kódot

A funkcionális programozás technikákat ad a kódunk problémáinak megoldására. Ezek egyike, a részleges alkalmazás, kissé trükkös megérteni, de lehetővé teheti számunkra, hogy kevesebbet írjunk belőle (érdekesnek tűnik, igaz?).

Mi az?

A részleges alkalmazás egy funkcióval indul. Vesszük ezt a függvényt, és létrehozunk egy újat, amelynek egy vagy több argumentuma már „be van állítva” vagy részben alkalmazva . Ez furcsán hangzik, de csökkenti a funkcióinkhoz szükséges paraméterek számát.

Adjunk néhány összefüggést arról, hogy mikor alkalmazhatnánk részleges alkalmazást:

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

Ez a kis funkció egyetlen szót vesz fel lastJoin, és tetszőleges számú items. Kezdetben listegy commaSeparatedváltozót deklarál . Ez a változó az összes kivételével vesszővel elválasztott összekapcsolt tömböt tárol. A következő sorban az utolsó elemet itemsegy lastItemváltozóban tároljuk . Ezután a függvény visszatér egy karakterlánc sablon segítségével.

Ezután a függvény itemskarakterláncként adja vissza a formátumot. Például:

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"

Funkciónk listsegítségével listákat készíthetünk, amikor csak akarjuk. Az általunk létrehozott listatípusok, „és”, „együtt”, „vagy” az általános listfüggvény szakterülete . Nem lenne jó, ha saját funkcióik lennének ?!

A részleges alkalmazás használata

Ebben segíthet a részleges alkalmazás. Például egy listAndfüggvény elkészítéséhez az „és” argumentumot „beállítjuk” (vagy részben alkalmazzuk ) lastJoin. Ennek eredménye azt jelenti, hogy a részben alkalmazott függvényünket így hívhatjuk meg:

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

Ebben sem kell megállni. Számos speciális függvényt készíthetünk, ha egy argumentumot részben alkalmazunk a listafüggvényünkre:

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

Ehhez létre kell hoznunk egy partialsegédfunkciót:

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

Ez a függvény fnaz első és firstArga második paraméterként veszi fel a függvényt . Ez visszaad egy vadonatúj egy paraméterrel, lastArgs. Ez összegyűjti az elfogadott érveket.

A listAndfüggvényünk megalkotásához a függvényünkben való partialátadást listés az utolsó csatlakozási szót hívjuk meg :

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

Funkciónk listAndmost csak egy tetszőleges tétellistát vesz fel. Ez a függvény meghíváskor viszont az átadott listfunkciót is meghívja . Láthatjuk, hogy az első érvként „és”, lastArgsmajd azután összegyűlt .

Most létrehoztunk egy részben alkalmazott függvényt. Programunkban újra és újra használhatjuk ezt a speciális funkciót:

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

Tovább vitte

Az partialáltalunk létrehozott funkció a részleges alkalmazás működésének bemutatása. Van néhány kiváló funkcionális JavaScript könyvtár, amelyek beépítették ezt a segédprogramot, például a Ramda JS.

Érdemes megjegyezni, hogy még akkor is, ha új ismeretekkel rendelkezik a részleges alkalmazásban, minden esély megvan arra, hogy használja. Ha valaha is használta a .bind()módszert egy függvénynél, ez a részleges alkalmazás példája. Általános gyakorlat, thishogy bekapcsolódnak a kontextus megadásához. A motorháztető alatt részben alkalmaz thisés új funkciót ad vissza.