초보자를 위한 함수식 프로그래밍
10274 단어 functionaltypescriptjavascriptnode
기능
함수는 오늘날 우리가 사용하는 대부분의 프로그래밍 언어의 핵심으로, 다시 사용할 수 있는 모든 코드 블록을 격리하는 방식이다.함수도 일부 프로그래밍 과정이나 작업을 저장할 수 있습니다. 기본적으로 이 함수에서 실제로 어떤 내용도 되돌려주지 않으면 함수는 빈 값을 되돌려줍니다.함수식 프로그래밍의 세계에는 두 가지 유형의 함수가 있다.순함수와 비순함수.
순함수
순수 함수는 코드 내부 상태를 바꾸지 않는 함수다.순수 함수는 그 작용역 밖에서 성명된 값을 바꾸거나 변이하지 않으며, 내부 논리는 이런 값에 의존하지 않는다.그것은 그것에게 전달되는 매개 변수에만 관심을 갖는다.순수 함수의 한 가지는 입력이 같으면 같은 출력을 되돌려야 한다는 것이다.
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
는 순수한 함수가 아니다. 같은 입력을 주면 같은 출력을 되돌려주지 않기 때문이다.무작위 수를 바탕으로 계산하는 모든 함수는 순수 함수가 아니다.그러나 우리는 입력5
과 2
만 하면 첫 번째 함수는 항상 같은 출력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
나는 네가 이것이 매우 유용하고 재미있다고 생각하기를 바란다. 아래에 평론을 남기고 함수식 프로그래밍 방면의 지식과 경험을 공유해라.
Reference
이 문제에 관하여(초보자를 위한 함수식 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kalashin1/functional-programming-3555텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)