Currying biến một hàm nhận nhiều tham số thành chuỗi hàm, mỗi hàm nhận một hoặc vài tham số.
Hàm curried kiểm tra đã đủ tham số chưa: đủ thì gọi hàm gốc, chưa đủ thì trả về hàm mới chờ nhận thêm.
js
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) return fn(...args);
return (...more) => curried(...args, ...more);
};
}
const add = curry((a, b, c) => a + b + c);
add(1)(2)(3); // 6
add(1, 2)(3); // 6
add(1, 2, 3); // 6Câu này kiểm tra kiến thức functional programming, closure và khả năng xử lý arguments linh hoạt.