Mazání v Javascriptu

Jeden z principů, že každý programátor se snaží dodržovat, je SUCHÉ (neopakujte YourSelf ), s Nosnými uvidíme, jak to s naší funkcí je poměrně jednoduché a užitečné.

Tento obsah jsem publikoval první v mé newsletter, týden po zveřejnění veřejné newsletter na můj blog, pokud chcete být první, kdo četl přihlásit

Banner příspěvky

způsob, jak jsme obvykle psát naše funkce je:

//ES2015const divisible = (num, mod) => num % mod;//ES5var divisible = function(num, mod) { return num % mod;}

Za účelem spuštění této funkce musíme předat dva argumenty, ale pokud bychom chtěli mít funkci, která výhradně zkontroluje, zda je číslo ještě budeme muset napsat novou funkci. V tomto okamžiku je užitečné mít currified funkci.

než pochopíme, jak currified funkce funguje, musíme znát některé pojmy.

funkce jsou first-class citizens, to znamená, že funkce jsou objekty, můžete je předat jako argumenty, uložených v proměnných, a vrátit se do další funkce Funkce vysokého řádu v Javascriptu

uzavření je, když nějaká funkce je schopen si zapamatovat a přístup k lexikální rozsah, i když funkce je proveden mimo lexikální rozsah. Pochopení uzávěry v jazyce JavaScript

je-Li funkce přijímá více než jeden parametr, to může být přepsána jako funkce, která přebírá parametr a vrací funkci, je v pořadí obdrží parametr a vrací výsledek. Počítám lambda v JavaScriptu

¿co je kari?

Curry je schopen volat funkci s menším počtem parametrů, než očekává, vrátí funkci, která čeká na zbývající parametry a vrátí výsledek.

tímto způsobem bychom mohli přepsat funkci na začátku jako

//ES2015const divisible = mod => num => num % mod;//ES5var divisible = function (mod) { return function (num) { return num % mod; }}

Pro volání této funkce máme dvě možnosti

  • Předat argumenty spuštěním funkce
divisible(10)(2)
  • Kolem argument, a získat funkce, které si pamatují tento argument
const divisibleEn3 = divisible(3);divisibleEn3(10)

Jak jsme se napsat funkci currificada není složité, ale mohli bychom to udělat trochu víc přirozené, jako escribimoscualquier funkce.

k tomu můžeme použít Lodash nebo Ramda, kteří mají kari metodu, která nám umožňuje currify jakoukoli funkci tímto způsobem.

import { __, curry, map } from 'ramda';const composeNombre = curry( (primer, apellido) => `${primer} ${apellido}`);const familiaJaimes = composeNombre(__, 'Jaimes')const nombres = console.log(map(familiaJaimes, nombres))

Pojďme se podívat na další užitečný příklad převzat z Většinou odpovídající průvodce pro funkční programování

import { curry } from 'ramda';// Estas funciones las puedes conseguir dentro de Ramda o Lodashvar match = curry(function(what, str) { return str.match(what);});var replace = curry(function(what, replacement, str) { return str.replace(what, replacement);});var filter = curry(function(f, ary) { return ary.filter(f);});var map = curry(function(f, ary) { return ary.map(f);});var hasSpaces = match(/\s+/g);hasSpaces("hello world");// hasSpaces("spaceless");// nullfilter(hasSpaces, );// var findSpaces = filter(hasSpaces);// function(xs) { return xs.filter(function(x) { return x.match(/\s+/g) }) }findSpaces();// 

Výhody Mazání,

  • Můžeme vytvořit nové funkce pouhým předáním naše bázové funkce s nějakými parametry.
  • můžeme transformovat jakoukoli funkci, která pracuje s jedním prvkem, na funkci, která pracuje se seznamem, zabalením do mapy.
  • můžete psát malé kousky kódu, které lze snadněji znovu použít.
  • je snadné o nich uvažovat.
  • psaní currified funkcí nám umožní skládat funkce.



+