클래스는 고차 함수를 작성하는 멋진 방법일 뿐입니다.
5936 단어 beginners
나는 책에서 나를 놀라게 한 한 가지 예를 들어주고 싶었다. 우리는 클래스가 함수와 근본적으로 다른 범주에 속한다고 생각하는 경향이 있습니다.
그러나 그들은 너무 다른가요?
예를 들어 다음과 같은 클래스가 있다고 가정해 보겠습니다.
class Person {
constructor(firstName, lastName) {
this.fName = firstName;
this.lName = lastName;
}
getFullName() {
return this.fName + ' ' + this.lName;
}
setFirstName(firstName) {
this.fName = firstName;
}
}
글쎄, 우리가 그것에 대해 생각한다면, 이것은 정말로 고차 함수일 뿐입니다.
Person
고차 함수는 인수(생성자)를 허용하고 해당 인수(메서드)를 조작할 수 있는 함수 목록을 반환합니다. 다음과 같이 Person
작성할 수 있습니다. function Person(firstName, lastName) {
let fName = firstName;
let lName = lastName;
function getFullName() {
return fName + ' ' + lName;
}
function setFirstName(firstName) {
fName = firstName
}
return function(method) {
switch (method) {
case 'getFullName':
return getFullName;
case 'setFirstName':
return setFirstName;
}
}
}
지금,
const person = new Person("Ben", "Bitdiddle")
person.getFullName()
된다
const person = Person("Ben", "Bitdiddle")
person('getFullName')()
여기서는 메서드를 호출하는 대신 메시지를 "전달"합니다. 이것이 바로 많은 고전적인 OO 사람들이 객체 지향이 실제로 메시지 전달에 관한 것이라고 말하는 이유입니다.
그래, 정말. 클래스는 인수(생성자)를 받아들이고 해당 인수(메서드)를 조작할 수 있는 함수 목록을 반환하는 고차 함수입니다.
이전에는 두 개의 개념이 다르다고 생각했지만 동일한 것으로 판명되면 새로운 아이디어를 발견할 수 있습니다. 두 개념 사이의 더 깊은 추상화를 찾고, 겉보기에 다른 범주에 걸쳐 아이디어를 적용하고, 개념 사이를 더 많이 이동할 수 있습니다. 유동적으로. 따라서 이러한 깨달음은 재미있을 뿐만 아니라 생각보다 훨씬 유용합니다.
이것을 좋아한다면 교과서에 비슷한 깨달음이 많이 있습니다. 그것을 가장 잘 경험하려면 파트너를 선택하고 함께 책을 통해 작업하는 것이 좋습니다.
이 에세이의 초안을 검토해 준 Daniel Woelfel, Alex Reichert, Jacky Wang에게 감사드립니다.
Reference
이 문제에 관하여(클래스는 고차 함수를 작성하는 멋진 방법일 뿐입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/stopachka/classes-are-just-a-fancy-way-of-writing-higher-order-functions-7k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)