자바 스크립트에서 카레

모든 프로그래머가 준수하고자하는 원칙 중 하나는 건조(자신을 반복하지 마십시오)이며,카레로 우리는 우리의 기능으로 이것을 수행하는 방법을 볼 것입니다.

내 뉴스 레터에 처음 출판이 내용,내 블로그에 공개 뉴스 레터를 게시 한 후 주,당신은 구독 읽을 첫 번째가되고 싶은 경우

배너 게시물

우리는 일반적으로 우리의 기능을 작성하는 방법은 다음과 같습니다:

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

이 함수를 실행하려면 두 개의 인수를 전달해야하지만 숫자가 짝수인지 독점적으로 확인하는 함수를 원한다면 새로운 함수를 작성해야합니다. 이 시점에서 커리 프 된 기능을 갖는 것이 유용합니다.

곡선 함수가 어떻게 작동하는지 이해하기 전에 몇 가지 개념을 알아야합니다.

함수는 일류 시민,이 함수는 객체라는 것을 의미,당신은 변수에 저장된 인수로 전달하고,다른 함수 내에서 반환 할 수 있습니다 자바 스크립트에서 높은 순서의 기능

함수가 어휘 범위의 외부에서 실행되는 경우에도,기억 및 어휘 범위에 액세스 할 수있을 때 폐쇄이다. 자바 스크립트에서 클로저 이해

함수가 두 개 이상의 매개 변수를 수신하면 매개 변수를 가져 와서 함수를 반환하는 함수가 매개 변수를 수신하고 결과를 반환하는 함수로 다시 작성할 수 있습니다. 나는 자바 스크립트에서 람다를 계산

¿카레는 무엇입니까?

카레는 예상보다 적은 수의 매개 변수로 함수를 호출 할 수 있으며 나머지 매개 변수를 기다리고 결과를 반환하는 함수를 반환합니다.

이 방법으로 함수를 처음에 다음과 같이 다시 쓸 수 있습니다

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

이 함수를 호출하기 위해 우리는 두 가지 옵션이 있습니다

  • 함수를 실행하여 인수를 전달
divisible(10)(2)
  • 인수를 전달하고이 인수를 기억하는 함수를 수신
const divisibleEn3 = divisible(3);divisibleEn3(10)

우리가 함수를 작성할 때 커리 피카 다 복잡하지는 않지만 에스크 리비 모스 퀴어 함수로 조금 더 자연스럽게 할 수 있습니다.

이를 위해 우리는 카레 방법이있는 로다 쉬 또는 람다를 사용할 수 있습니다.이 방법으로 모든 기능을 cur.

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

함수형 프로그래밍에 대한 대부분의 적절한 가이드에서 가져온 더 유용한 예를 살펴 보겠습니다

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();// 

카레의 장점

  • 우리는 단순히 몇 가지 매개 변수와 우리의 기초 함수를 전달하여 새로운 기능을 만들 수 있습니다.
  • 단일 요소와 함께 작동하는 모든 함수를 맵에 래핑하여 목록과 함께 작동하는 함수로 변환 할 수 있습니다.
  • 재사용하기 쉬운 작은 코드를 작성할 수 있습니다.
  • 그들에 대해 쉽게 추론 할 수 있습니다.
  • 곡선 함수를 작성하면 함수를 작성할 수 있습니다.



+