Javascript를 사용하여 기본 함수 프로그래밍
기본 함수 프로그래밍 지식
이를 위해, 우리는 우선 함수식 프로그래밍이 어떻게 정의되었는지 이해해야 한다.이에 대한 설명은 사실 매우 간단하다.
"함수식 프로그래밍(일반적으로 FP로 약칭)은 순수 함수를 조합하여 공유 상태를 피하고 가변 데이터와 부작용을 피하여 소프트웨어를 구축하는 과정이다."에릭 엘리엇(JavaScript 인터뷰 파악: 함수 프로그래밍은 무엇입니까?)
좋아요.그래, 유행어가 너무 많아!우리는 이 문장을 중요한 부분에 따라 신속하게 분해한 후에 다음과 같은 결론을 얻어야 한다.
그것은 기본적으로 언제든지 주어진 입력에 대해 같은 출력을 가진다는 원칙을 따른다.
이런 행위를 함수의 결정론이라고도 부른다.따라서 정상 함수는 입력과 출력을 계산하는 것이 사실이지만 전역 변수 내의 변화나 일부 부작용으로 인해 이러한 입력과 출력은 언제든지 같지 않다.
순수 함수tho의 요구는 일반 함수와 같지만, 다른 것은, 전역/외부 상태에 접근할 수 없기 때문에, 주어진 입력과 일치하고, 같은 출력을 따른다는 것이다.(일대일 관계처럼)
Map
, Reduce
, RightReduce
, filter
...namespace studentExample {
const costPerStudentPerMonth: number = 200;
const months: number = 2;
const students: Array<{ name: string }> = [
{
name: 'lulu'
},
{
name: 'lala'
},
{
name: 'lili'
},
{
name: 'lele'
}
];
//normal function
// + side effects, when changing any variable
// + relying on a shared state
const calculateStudentsCost = (students: Array<{ name: string }>) =>
`${students.length * costPerStudentPerMonth * months} $`;
// pure function
// - side-effects, same input = same output!
// - no shared state
const pureCalculateStudentsCost = (studentsCount: number) => (
monthsToCalculate: number
) => (costPerStudentPerMonth: number) =>
`${studentsCount * costPerStudentPerMonth * monthsToCalculate} $`;
console.log(calculateStudentsCost(students)); // 1600 $
console.log(pureCalculateStudentsCost(students.length)(months)(costPerStudentPerMonth)); // 1600 $
}
함수식 프로그래밍을 사용하는 가장 큰 단점 중 하나는 모든 내용이 더 지루해지고 이해하기 어려울 수도 있다는 것을 알 수 있습니다.대상을 향한 방법을 사용함으로써 당신의 뇌는 좋은 훈련을 거쳐 어떤 개념을 이해할 수 있다.예를 들어 만약 누군가가 하나의 임무를 제기하여 원의 직경과 둘레를 계산한다면, 대부분의 사람들은 대상을 향한 방법을 선택할 것이다. 왜냐하면 그것은 이해하기 쉽기 때문이다.우선,circle 클래스를 만듭니다. 이 클래스는 모든 필요한 클래스 변수와 숫자를 계산하는 데 필요한 방법을 가져옵니다.
경험에 의하면 함수를 선택하는 사람은 매우 드물다. 왜냐하면 이렇게 하면 감각이 그다지 자연스럽지 않기 때문이다. 그러나 나도 수학 함수는 매우 좋은 예로 함수 방법으로 투영할 수 있다는 것을 알아차렸다.위의 원형 예제를 사용해 보겠습니다.
namespace circleExample {
// diameter = radius * 2
const circleDiameter = (radius: number) => radius * 2;
// Circumference = π × Diameter
const circumferenceWithDiameter = (diameter: number) => Math.PI * diameter;
// Circumference = π × radius × 2
const circumferenceWithRadius = (radius: number) => Math.PI * radius * 2;
// area = π × radius ** 2
const areaWithRadius = (radius: number) => Math.PI * radius ** 2;
// Example calculation
console.log(areaWithRadius(4))
console.log(circumferenceWithDiameter(circleDiameter(4)))
}
나에게 있어서 이것은 매우 실용적이고 읽을 수 있는 것 같다. 왜냐하면 너는 함수와 입력만 읽을 수 있기 때문이다.너는 코드를 보지 않아도 그곳에서 무슨 일이 일어났는지 알 수 있다.이 특정한 프로젝트 예시를 제외하고math는 시종 좋은 예시로 함수식 프로그래밍의 강력한 기능을 보여 준다.이외에, 당신은 주의했습니까? 우리의 프로그래밍 예시에서 우리는 어떠한 변수도 바꾸지 않았습니다. 이것은 함수 프로그래밍을 사용하는 좋은 효과입니다.
마지막으로 나는 네가 독서에서 약간의 지식을 얻을 수 있기를 바란다. 나도 네가 개인이나 업무 관련 항목을 다시 접촉할 때 이 점을 명심하기를 바란다.이것은 함수식 프로그래밍 모델에 대한 매우 기본적인 이해일 뿐이며, 이 점에 대해서는 아직도 많은 탐색이 필요하다.더 심도 있는 연구가 가능한지 확인하기 위해 언제든지 피드백을 남겨 주십시오.:)
Reference
이 문제에 관하여(Javascript를 사용하여 기본 함수 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/marpme/basic-functional-programming-with-javascript-2elj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)