Currying là một trong những hàm bậc cao hơn của Java Script.
Currying là một hàm của nhiều đối số được viết lại sao cho nó nhận đối số đầu tiên và trả về một hàm lần lượt sử dụng các đối số còn lại và trả về giá trị.
Bối rối?
Hãy xem một ví dụ,
function add(a,b)
{
return a+b;
}
add(5,6);
Điều này tương tự như chức năng cà ri sau đây,
function add(a)
{
return function(b){
return a+b;
}
}
var curryAdd = add(5);
curryAdd(6);
Vậy mã này có nghĩa là gì?
Bây giờ đọc lại định nghĩa,
Currying là một hàm của nhiều đối số được viết lại sao cho nó nhận đối số đầu tiên và trả về một hàm lần lượt sử dụng các đối số còn lại và trả về giá trị.
Vẫn còn bối rối? Hãy để tôi giải thích sâu sắc!
Khi bạn gọi chức năng này,
var curryAdd = add(5);
Nó sẽ trả về cho bạn một chức năng như thế này,
curryAdd=function(y){return 5+y;}
Vì vậy, đây được gọi là chức năng bậc cao. Có nghĩa là, lần lượt gọi một hàm trả về một hàm khác là một định nghĩa chính xác cho hàm bậc cao hơn. Đây là lợi thế lớn nhất cho huyền thoại, Java Script. Vì vậy, trở lại với cà ri,
Dòng này sẽ truyền đối số thứ hai cho hàm curryAdd.
curryAdd(6);
lần lượt kết quả,
curryAdd=function(6){return 5+6;}
// Which results in 11
Hy vọng bạn hiểu cách sử dụng cà ri ở đây. Vì vậy, đến với những lợi thế,
Tại sao lại là cà ri?
Nó sử dụng khả năng sử dụng lại mã. Ít mã hơn, ít lỗi hơn. Bạn có thể hỏi làm thế nào nó là ít mã?
Tôi có thể chứng minh điều đó với ECMA script 6 chức năng mũi tên tính năng mới.
Đúng! ECMA 6, cung cấp cho chúng tôi tính năng tuyệt vời được gọi là chức năng mũi tên,
function add(a)
{
return function(b){
return a+b;
}
}
Với sự trợ giúp của hàm mũi tên, chúng ta có thể viết hàm trên như sau,
x=>y=>x+y
Thật tuyệt phải không?
Vì vậy, ít mã hơn và ít lỗi hơn !!
Với sự trợ giúp của các hàm bậc cao hơn này, người ta có thể dễ dàng phát triển mã không có lỗi.
Tôi thách thức bạn!
Hy vọng, bạn đã hiểu thế nào là cà ri. Xin vui lòng bình luận ở đây nếu bạn cần bất kỳ làm rõ.
Cảm ơn chúc một ngày tốt lành!
curry
và cácuncurry
hàm của Haskell. Điều quan trọng ở đây là các đẳng cấu này được cố định trước và do đó "tích hợp" vào ngôn ngữ.