84423067 2020-06-12
在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。
举个例子:
function add(a, b) { return a + b; } // 执行 add 函数,一次传入两个参数即可 add(1, 2) // 3 // 假设有一个 curry 函数可以做到柯里化 var addCurry = curry(add); addCurry(1)(2) // 3
我们会讲到如何写出这个 curry 函数,并且会将这个 curry 函数写的很强大,但是在编写之前,我们需要知道柯里化到底有什么用?
举个例子
// 示意而已 function ajax(type, url, data) { var xhr = new XMLHttpRequest(); xhr.open(type, url, true); xhr.send(data); } // 虽然 ajax 这个函数非常通用,但在重复调用的时候参数冗余 ajax(‘POST‘, ‘www.test.com‘, "name=kevin") ajax(‘POST‘, ‘www.test2.com‘, "name=kevin") ajax(‘POST‘, ‘www.test3.com‘, "name=kevin") // 利用 curry var ajaxCurry = curry(ajax); // 以 POST 类型请求数据 var post = ajaxCurry(‘POST‘); post(‘www.test.com‘, "name=kevin"); // 以 POST 类型请求来自于 www.test.com 的数据 var postFromTest = post(‘www.test.com‘); postFromTest("name=kevin");
待更新