자바스크립트에서 Currying을 사용하여 함수의 파라미터를 어떻게 정렬할 수 있나요?
Currying을 사용하여 함수의 파라미터를 정렬하는 간단한 예제를 살펴보겠습니다.
우선, Currying을 구현하는 함수를 정의합니다.
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.call(this, ...args);
} else {
return function (...nextArgs) {
return curried.call(this, ...args, ...nextArgs);
};
}
};
}
그런 다음, 정렬 함수를 예로 들어보겠습니다.
function sortNumbers(a, b) {
return a - b;
}
const curriedSort = curry(sortNumbers);
const sortAsc = curriedSort();
const sortDesc = curriedSort().bind(null, -1);
const numbers = [3, 1, 2, 5, 4];
console.log(numbers.sort(sortAsc)); // [1, 2, 3, 4, 5]
console.log(numbers.sort(sortDesc)); // [5, 4, 3, 2, 1]
위의 코드에서 curry
함수를 사용하여 sortNumbers
함수를 curried 함수로 변환했습니다. 그런 다음 curriedSort
함수를 정의하여 정렬 함수를 currying으로 호출할 수 있도록 했습니다.
curriedSort
를 호출할 때 인자를 전달하지 않으면 오름차순으로 정렬되고, -1
을 인자로 전달하여 sortDesc
변수를 통해 내림차순으로 정렬할 수 있습니다. 그리고 numbers
배열에 sort
메소드를 호출하여 정렬된 결과를 확인합니다.
이렇게 Currying을 사용하여 함수의 파라미터를 정렬할 수 있습니다. Currying은 함수를 더 유연하고 다양한 상황에 대응할 수 있도록 도와주는 기술입니다.