초보자를 위한 함수식 프로그래밍

함수식 프로그래밍은 일종의 프로그래밍 모델로 함수를 한데 묶어 특정한 프로그래밍 임무를 수행하는 데 전념한다.오늘날 많은 프로그래밍 언어들이 함수식 프로그래밍 스타일을 지원한다.대다수의 사람들은 대상을 대상으로 하는 방식으로 일을 하는 것을 더 좋아한다고 말하지만, 함수식 프로그래밍 방법으로 코드를 작성하는 것은 틀림없다는 것을 알려줄게.대부분의 언어의 지원으로 우리는 함수를 매개 변수로 다른 함수에 전달할 수도 있고, 다른 함수에서 함수를 되돌릴 수도 있다.따라서 함수식 프로그래밍 방법을 사용하는 기본 사상은 코드 중의 서로 다른 프로세스를 다시 사용할 수 있는 함수로 분리하는 것이다.함수 프로그래밍은 함수에 매우 관심을 가지기 때문에 우리는 함수가 무엇인지와 그 유형을 이해할 것이다.

기능
함수는 오늘날 우리가 사용하는 대부분의 프로그래밍 언어의 핵심으로, 다시 사용할 수 있는 모든 코드 블록을 격리하는 방식이다.함수도 일부 프로그래밍 과정이나 작업을 저장할 수 있습니다. 기본적으로 이 함수에서 실제로 어떤 내용도 되돌려주지 않으면 함수는 빈 값을 되돌려줍니다.함수식 프로그래밍의 세계에는 두 가지 유형의 함수가 있다.순함수와 비순함수.

순함수
순수 함수는 코드 내부 상태를 바꾸지 않는 함수다.순수 함수는 그 작용역 밖에서 성명된 값을 바꾸거나 변이하지 않으며, 내부 논리는 이런 값에 의존하지 않는다.그것은 그것에게 전달되는 매개 변수에만 관심을 갖는다.순수 함수의 한 가지는 입력이 같으면 같은 출력을 되돌려야 한다는 것이다.
const add = (a:number, b:number):number => a + b; // PURE FUNCTION
add(2, 3) // 5
const addRand = (a:number) => {
    const rand = Math.random();
    return rand + a;
} // IMPURE FUNCTION
위에서 말한 바와 같이 함수 addRand 는 순수한 함수가 아니다. 같은 입력을 주면 같은 출력을 되돌려주지 않기 때문이다.무작위 수를 바탕으로 계산하는 모든 함수는 순수 함수가 아니다.그러나 우리는 입력52만 하면 첫 번째 함수는 항상 같은 출력3을 되돌려준다.순수함수는 함수 프로그래밍의 핵심으로 테스트와 디버깅이 쉬우며 전역 범위 내의 어떤 것도 영향을 주지 않는다. 우리는 순수함수를 서로 위에 쌓아 더욱 높은 함수를 만들 수 있다.
const add = (a:number, b:number):number => a + b; // PURE FUNCTION

const square = (a:number):number => Math.pow(a, 2); // PURE FUNCTION

const addAndSquare = add(square(2), square(3)) 

console.log(addAndSquare) // 13tt
우리는 함수식 프로그래밍 스타일이 우리에게 가져다 주는 기능을 탐색하고 있을 뿐이다. 여기서 우리는 함수를 매개 변수로 다른 함수에 전달하는 방법을 분명히 보여 준다.우리는 또 다른 함수에서 함수로 되돌아오는 장점을 이용할 수 있다.함수를 매개 변수로 받아들이거나 되돌아오는 함수를 고급 함수라고 한다.
const makeNumString = num => num2 => num + num2.toString();//
const num = makeNumString(2)
console.log(num(1)) // '3'

불순 기능 및 부작용
우리는 이미 순수 함수의 개념을 이해했고 함수 프로그래밍은 코드에서 순수 함수를 사용하는 기초 위에서 세워진 것이다.불순함수, 불순함수와 순함수가 정반대인 것을 봅시다.그것들은 Side Effects를 초래하는 함수이다. 불순함수와 부작용이 완전히 나쁜 것은 아니다. 우리는 매일 코드에서 많은 부작용을 초래하는 불순함수를 대량으로 사용한다.부작용은 기능이 불순한 결과다.그 범위 내에서 성명되지 않은 변수를 바꾸는 함수는 불순 함수다.불순함수로 인해 변수를 바꾸는 결과는 부작용이다.더욱 광범위한 의미에서 부작용은 불순함수로 인한 응용 프로그램 상태의 변화를 묘사할 수 있다.또 다른 불순함수의 예를 봅시다.
const state = { name: 'Job', likes: 'hardship' };
// IMPURE FUNCTION
const impureFunc = (obj) => {
    sate.name = 'Dan';
    return Obj
}
// ANOTHER IMPURE FUNCTION
const impureFunc2 = (obj) => {
    const obj.field = 'value'
    return obj
}
// ANOTHER IMPURE FUNCTION
const impureFunc3 = obj => console.log(obj)
우리가 위에서 제시한 모든 예는 불순함수이다. 내가 말한 것처럼 코드에서 불순함수를 사용하는 것은 틀림없다. 그러나 너는 그것들의 행위 방식과 그것들이 일으키는 부작용에 각별히 주의해야 한다. 우리가 위에서 제시한 예는 불순하기 때문이다.
  • 그 작용역을 초과한 전역 변수를 변이한다.
  • 매개 변수로 전달된 대상의 속성을 변이한다.
  • 애플리케이션의 상태를 변경합니다.
  • 우리는 더 많은 종류에 따라 그것을 불순하다고 분류할 수 있다.따라서 함수 방법을 사용하여 코드를 작성하는 것은 충분히 가능하지만, 순수함수가 아닌 순수함수를 사용해 보십시오. 그러나 순수함수를 사용하는 것이 합리적이라고 생각한다면, 이 함수의 부작용을 이해해야 합니다.즉, 함수 방법을 사용하여 매우 간단한 문제를 해결하자.항목을 무작위로 선택할 수 있는 그룹을 반전시킵니다.
    // Reverse the array
    const reverseArr = arr => arr.reverse() // Reverses an array
    
    const getRandElement = arr => arr[Math.random() * arr.length]; // Picks a random element from an array
    
    const arr = [1, 2, 4, 8, 9, 10, 21];
    
    const randElement = getRandElement(reverseArr(arr))
    
    console.log(randElement) // logs out a random element
    
    나는 네가 이것이 매우 유용하고 재미있다고 생각하기를 바란다. 아래에 평론을 남기고 함수식 프로그래밍 방면의 지식과 경험을 공유해라.

    좋은 웹페이지 즐겨찾기