过去多啦不再A梦2017-07-05 11:08:44
특정 데이터 구조를 비교하기 위해 만들어진 도구 기능입니다. 예를 들어 데이터 구조 형식은 다음과 같습니다.
으아악이때 일반적인 sort
메소드는 다음과 같은 형식으로 작성해야 합니다.
이 코드의 문제점:
value
매개변수는 하드 코딩되어 있으므로 다른 필드를 정렬할 때 다시 코딩해야 합니다.
1 / -1을 반환하는 논리는 중복되고 지루합니다.
Little Red Book 시대에는 정렬을 위해 익명 함수를 직접 작성하는 것이 충분히 가독성이 좋지 않았습니다(이제는 화살표 함수가 있으므로 실제로 큰 문제는 아닙니다).
그래서 위의 경우에 대해 Red Book의 저자는 [특정 필드 정렬] 기능을 생성하는 일반 도구 기능을 설계했습니다. 이 유틸리티 함수를 호출하면 반환되는 것은 정렬된 결과(고차 함수라고도 함)가 아니라 새 함수입니다.
이 패키지를 적용한 후의 코드는 다음과 같습니다.
으아악이것은 비즈니스 로직을 단순화합니다.
淡淡烟草味2017-07-05 11:08:44
내가 이해하지 못하는 것은 두 개체의 특정 속성 크기를 비교하면createComparisonFunction("test")({'test': 1}, {"test": 2})
-1
巴扎黑2017-07-05 11:08:44
함수를 호출할 때 두 단계로 살펴보세요. 먼저 createComparisonFunction()
传入比较的字段。在createComparisonFunction()
函数内,返回一个匿名函数。同时由于匿名函数处在createComparisonFunction()
内,所以你对createComparisonFunction()
传入的参数propertyName
对匿名函数也有效存在。
通过上一步,你已经得到的匿名函数包含propertyName
,此时你就可以传入你要比较的两个对象,在函数内比较他们的propertyName
속성을 통해 비교 결과를 반환합니다.