클로즈업과 카레

프로그래밍 언어의 모범적인'카레'라고 들어보셨나요?아니오, 이것은 인도 식단이 아니지만, 당신의 코드를 더욱 맛있게 할 수 있을 겁니다.
이 설명서에서는 이전에 포장과 카레를 접한 적이 있든 없든 또는 초보자든 다음과 같은 내용을 설명합니다.
  • 클로즈업과 카레의 차이
  • 카레와 그 주요 장점
  • 왜 프로젝트에서 카레를 사용하는지
  • 나는 너에게 이론과 효과적인 용례, 예와 견고한 수학 배경을 줄 것이다.
    면책 성명: 저는 자바스크립트를 바탕으로 본문을 작성할 것입니다. 그러나 본문의 주요 사상은 모든 현대 프로그래밍 언어에 적용될 수 있습니다.

    폐쇄는 무엇입니까?


    클립은 함수와 그 범위를 설명하는 조합으로 설명할 수 있다.
    그러나 이것은 도대체 무엇을 의미하는가?역할 영역은 함수를 만들 때 함수 환경의 모든 국부 변수로 구성됩니다.패킷을 닫으면 함수가 발견된 상태의 모든 국부 변수를 인용할 수 있습니다.
    이것은 기본적으로 다른 함수에서 하나의 함수를 정의함으로써 이루어진 것이다. 함수 중의 함수는 기술적으로 하나의 폐쇄이다.주 함수(부모 또는 외부 함수라고도 함)를 활성화하면 모든 로컬 변수의 새 복사본을 보관하는 새 실행 컨텍스트가 생성됩니다.이 국부 변수를 전역 성명 변수에 연결하거나 부모 함수에서 클립을 되돌려줌으로써 전역적으로 이 국부 변수를 인용할 수 있습니다.
    다음 예는 다음과 같습니다.
    const closuredFunction= someVariable =>{
       let scopedVariable=someVariable;
       const closure=()=>{
           scopedVariable++;
           console.log(scopedVariable);
       }
    
       return closure;
    }
    
    주의: 나는 asomeVariable가 정수라고 가정하지만 ++ 다른 종류의 변수로 밀어낼 수 있다.본고에서 화살표 함수를 계속 사용할 것입니다. 더 많은 설명이 필요하시면 평론을 해 주십시오. 저는 그것을 재구성할 것입니다.

    클로즈업:실제 응용


    ES6가 클래스를 도입하기 전에 클립은 클래스 프라이버시를 만드는 간단한 방법을 대표한다. OOP(대상 프로그래밍)에서 사용하는 방법과 유사하고 개인적인 방법을 모의할 수 있다.이것은'모듈 모드'라고 불리는데, 이것은 우리가 쉽게 유지보수할 수 있는 코드를 작성하고, 명칭 공간의 오염을 줄이며, 중용성을 높일 수 있도록 한다.
    계속해서 위의 예에서 외부 함수(closuredFunction는 공공 함수로 일부 사유 변수(scopedVariable와 내부 함수closure에 접근할 수 있다.
    이제 다음을 적용해 보겠습니다.
    const closuredFunction= someVariable =>{
       let scopedVariable=someVariable;
       const closure=()=>{
           scopedVariable++;
           console.log(scopedVariable);
       }
    
       return closure;
    }
    let testOne = closuredFunction(1);
    testOne(); // will output 2
    testOne(); // will output 3
    
    let testTwo = closuredFunction(10);
    
    testTwo(); // will output 11
    testTwo(); // will output 12
    
    testOne(); // will output 4
    
    무슨 일이 있었죠?testOne()의 모든 호출은 같은 외부 역할 영역에 접근하기 때문에 같은 scopedVariable에 접근한다.값이 변경되면 다음 값도 변경됩니다.
    그러나 같은 외부 함수에 대한 다른 호출은 새로운 역할 영역을 만들고 새로운 scopedVariable 을 가지고 있기 때문에 역할 영역과 상하문 때문에 완전히 독립된 변수를 제시할 것이다.

    카레가 뭐예요?


    카레는 인도차 대륙에서 기원한 요리로 향료와 바닐라의 복잡한 조합을 사용한다.
    좋아, 문장마다 카레 농담 하나면 충분해.

    Currying refers to the process of transforming a function with multiple arity into the same function with less arity. The curried effect is achieved by binding some of the arguments to the first function invoke, so that those values are fixed for the next invocation. - Kristina Brainwave


    다시 말하면
    Currying은 다른 함수를 즉시 계산하고 반환하는 함수 모드입니다.JavaScript 함수는 이전 섹션에서 보았던 것처럼 다른 함수를 반환하는 표현식이기 때문에 가능합니다.
    Curried 함수는 링크를 통해 패키지를 닫고 내부 함수를 즉시 반환하여 구성됩니다.

    카레 사용 방법


    표준 함수 호출은 다음과 같습니다.
    sampleFunction('param1', 'param2', 'param3');
    
    curried 함수는 다음과 같습니다.
    sampleFunction('param1')('param2')('param3');
    
    만약 이것이 익숙해 보인다면, 그것은 확실히 HOC (고급 구성 요소) 가curried 함수이기 때문이다.
    앞의 코드 세그먼트를curried 함수로 변환하면 다음과 같습니다.
    function sampleFunction(param1){ 
       //some logic
       return param2 => { 
         //some other logic 
         return param3 => { 
            return finalResult;    
         }  
       }
    }
    
    체인의 마지막 함수는 체인의 모든 매개 변수에 접근할 수 있습니다.curried 함수의 관건은 curried 함수에 접근할 수 있다는 것입니다.
    어떻게 써요?
    let someParam = sampleFunction(param1);
    let anotherParam = someParam(param2);
    console.log(anotherParam(param3));
    
    또는 일종의 저속한 방식으로
    sampleFunction('param1')('param2')('param3');
    
    이것은 그것이 어떻게 호출되었든지 간에, 서열이 정확하기만 하면, 최종 결과는 시종 예상대로 되돌아온다는 것을 의미한다.

    카레는 일종의 끝인가요?


    그래, 네가 지금 이미 알아차렸듯이, 이 두 가지 모델은 비슷한 점이 있다.그러나 그것들은 서로 다른 용례를 가지고 있다.
    Currying은 패킷을 닫는 동안 모든 매개변수를 동시에 수신하지 않고 개별적으로 수신한다는 의미입니다.
    나는 인터넷에서 이 유용한 비유를 찾았다.
    카레는 하나의 함수에 하나씩 성분(파라미터나 다른 향료)을 첨가하는 것으로 볼 수 있다.너는 지금 몇 가지 논점을 내려놓을 수 있고, 동시에 다른 논점을 내려놓을 수 있다.만약 함수 중의 매개 변수가 프로그램의 다른 조작에 의존한다면, 이것은 매우 유용할 것이다.그러나 함수의 매개 변수로 클립을 만들고 싶다면 두 번째 매개 변수를 호출할 때마다 이 매개 변수의 값이 다르다면curry로 표시합니다.

    카레는 어떤 좋은 점이 있습니까?언제 써야 합니까?


    프로젝트가 발전함에 따라 카레가 얼마나 유용한지 곧 알게 될 것이다. 왜냐하면 카레의 확장성이 매우 강하기 때문이다.프로젝트가 복잡할수록 비위를 맞추면 할수록 생명을 구할 수 있다.
    대형 복잡한 프로그램을 제어하려면 코드를 깨끗하게 하는 안전한 방법으로 커리를 사용할 수 있습니다.

    카레와 깨끗한 코드.


    긴 함수를 컴파일하기 시작하면깨끗한 코드의 최적 실천은 부작용을 피하기 위해 모든 함수를 독립적으로 운행하고 가능한 한 간단하고 원자화해야 한다는 것을 알려 줍니다.
    부작용이란 발생하는 상황을 가리킨다. 예를 들어 한 함수에 대량의 난잡한 코드를 배치하면 실제적으로 다른 함수들이 더 깊은 차원에서 하는 일에 영향을 주고 범위와 변수를 수정하지 않는 상태를 말한다.다시 말하면 부작용은 국부 환경 외에 일부 상태 변수 값을 수정하는 조작, 함수 또는 표현식이다.
    만약 당신의 함수가 과도하게 충전된다면 (예를 들어 부작용이 많다면) 당신의 코드는 깨끗하지 않을 것이다.만약 당신의 코드가 깨끗하지 않다면, 당신의 프로젝트는 확장할 수 없고, 유지보수도 매우 어려울 것이다.
    이상적인 상황에서 함수는 반드시 하나의 매개 변수만 받아들여야 한다.
    JavaScript가 클래스를 ES6에 통합한 이후 클립은 더 이상 유행하지 않습니다.그러나 클립과curry는 여전히 깨끗하고 신축 가능한 코드의 관건적인 부분이다.함수식 프로그래밍에서 그것들은 기본적으로 대상을 대상으로 프로그래밍하는 개인적인 방법과 유사한 용도를 가진다.
    이제 너는 포장과 카레가 무엇인지, 그것을 어떻게 사용하는지, 그리고 왜 사용하는지 안다.대부분의 사람들이 여기서 멈춰서 코드를 작성할 수 있지만, 만약 당신이 나처럼 좀 이상하다면, 여기에는 위키백과에서 온 추가 수학 보상이 있습니다.

    수학적 배경


    수학과 컴퓨터 과학에서curry는 여러 개의 매개 변수를 포함하는 함수를 일련의 단일 매개 변수를 포함하는 함수로 바꾸는 기술이다.예를 들어 함수를 카레화하다

    출처: [위키백과][1]
    또는 더 추상적으로 말하면 한 함수는 두 개의 매개 변수를 받아들인다. 하나는 X에서 왔고 하나는 Y에서 왔다. 그리고 카레 연산을 통해 Z 출력을 생성한 다음에 이를 함수로 전환한다. 이 함수는 X에서 하나의 매개 변수를 받아들여 X에서 Z까지의 출력 함수를 생성한다.
    Curry는 여러 매개변수가 있는 함수를 처리하고 함수에 하나의 매개변수만 있는 프레임에서 사용할 수 있는 방법을 제공합니다.예를 들어 일부 분석 기술은 하나의 매개 변수가 있는 함수에만 적용될 수 있다.실제 함수는 통상적으로 더 많은 매개 변수를 필요로 한다.Frege는 여러 개의 매개 변수를 가진 함수를 단일 매개 변수 함수 체인으로 전환할 수 있기 때문에 단일 매개 변수의 상황에 해결 방안을 제공할 수 있음을 나타낸다.이런 변화를 지금은 카레라고 부른다.수학 분석이나 컴퓨터 프로그래밍에서 흔히 볼 수 있는 모든'일반'함수를 실현할 수 있다.그러나 어떤 종류에서는 카레가 불가능하다.카레를 허용하는 가장 일반적인 종류는 폐쇄된 반군 종류다.
    카레는 부분적으로 바르는 것과 관련이 있지만 부분적으로 바르는 것과는 다르다.실천에서 패키지 프로그래밍 기술은 일부 응용 프로그램과 일종의curry를 실행할 수 있다. 방법은 매개 변수를curry 함수와 함께 실행되는 환경에 숨기는 것이다. 우리가 이전에 본 바와 같이.
    이것들은 함수식 자바스크립트 프로그래밍의 핵심 개념으로 코드를 유연하고 강력하게 만드는 데 사용할 수 있다.실제 카레의 예나 가장 좋아하는 카레 요리가 있다면 댓글에 카레를 마음대로 넣으세요.

    좋은 웹페이지 즐겨찾기