Kikészítéséhez (kikészítéséhez) javascript, web-fejlesztés blog
Nem, a „kikészítéséhez” semmi köze a híres fűszer és általában nincs összefüggésben a keleti konyha. Ez a technika a funkcionális programozás, amely lehetővé teszi, hogy konvertálni a funkciót, helyette az első néhány érv, hogy egy állandó érték, amely így egy új funkció, kevesebb érvek alapján a régi. Ez kényelmes a használata, ha az első néhány érv, hogy egy-egy funkció előre ismert, és adja meg nekik minden hívás nem szükséges. A rövidség kedvéért meg kell hívni a funkció átalakítására karriruemoy és működik, hogy átalakítja, Carriere.
Gyakran alatt kikészítéséhez megérteni a helyettesítés állandó érték csak az egyik érv karriruemoy funkciót. Azt javaslom, úgy az általánosabb esetben, amikor a helyettesítési érvek karriruemoy számos funkciót.
végrehajtás
Megvalósítása kikészítéséhez mechanizmus, meg kell írni Carriere funkciója, amely paraméterként karriruemuyu funkció és értékek, amelyeket meg kell cserélni az első érv karriruemoy funkciót.
Nézzük először egy egyszerűbb lehetőség, ha karriruemaya funkció és az argumentumok számát, ahonnan szeretne megszabadulni, akkor előre ismert. Ahogy karriruemoy funkció, például, hogy valami olyan egyszerű, mint a funkció még két szám:
Miután ezt a funkciót lesz kitéve kikészítéséhez a cseréje egy argumentumot érték, amelyet akkor kapunk egy funkciót, amely, például lépésekben (eggyel növekszik), csökkentést (csökkentjük), vagy hozzá kell adni a már egyetlen argumentum előre meghatározott továbbítási érték.
Ez úgy történik, viszonylag egyszerűen:
Ha karriruemuyu átviteli függvény egy ismert számos érv érvként Carriere, de még mindig hagy számos cserét érvek karriruemoy meghatározott feladatokat, akkor a probléma sokkal bonyolultabb egy kicsit.
Vegyünk egy másik egyszerű függvény:
var sayHelloTo = curry (sayTwoWords, "Jó napot"); sayHelloTo ( "Bob"); sayHelloTo ( "Marry"); var sayGoodbyeTo = curry (sayTwoWords, "Goodbye"); sayGoodbyeTo ( "Bob"); sayGoodbyeTo ( "Marry"); var minusThree = curry (összege, -3); console.log (minusThree (13)); // 10
Most tekintsünk egy bonyolultabb változata, amikor karriruemaya funkciója nem ismert előre, és ismeretlen számú érv, hogy ki kell cserélni a konstans értékek.
A visszaadott függvény, fel kell hívnunk karriruemuyu funkció, amely az első argumentum értéke a tömb curryArgs. és a többiek - az átadott értékeket a paraméterek által visszaadott funkciót. Ehhez használja a natív módszereket kell alkalmazni. amely lehetővé teszi, hogy hívja a funkció értékeit az érveket, amelyeket átadott a tömbben. Ez a tömb módszer kapja alkalmazni, mint a második paramétert. Ahogy megkapja az első tárgy, amely visszatér hivatkozva ezt a funkciót. Mielőtt hívja a módszert alkalmazza karriruemoy funkció átalakulni tömb érveket objektum által visszaadott funkciót és ragasztó felhasználásával concat módszerrel. tömb curryArgs c kapott tömb. Az eredmény ez a művelet, és megadja a második érv, hogy alkalmazza a módszert. Ennek eredményeként, a curry függvény az:
Azonban ez a szintaxis hosszú, és meg kell adnia a második érv karriruemoy funkció, amely úgy tűnik, egy kicsit, de még mindig felesleges. Most képzeljük el, hogy karriruemoy funkció paraméterek listája elég hosszú, vagy csinál egy változtatható hosszúságú. És míg kikészítéséhez, lassabban fut, akkor elcsábítja rövidsége és a könnyű használat.
Most tekintsük a határesetben, amikor karriruemoy függvényargumentumok helyébe állandó érték.
var createMessageBox = curry (createElement, 'DIV',);
CreateMessageBox függvény létrehoz egy div c css class-message-box és nem fogad el semmilyen paramétert.
Ez minden, amit lehet mondani, szíj. Mint mindig, sok sikert kívánok!
Tényleg lehetetlen volt, hogy a „átalakító”?
Te idióta. A „kikészítéséhez” elment nevében Haskell Curry. Mit jelent a „transzformáció”?