当前位置:网站首页>Function coritization
Function coritization
2022-07-06 08:29:00 【Wind billows】
currying
In mathematics and Computer Science , Currierization is a technique that transforms a function with multiple parameters into a series of functions with one parameter .
in other words , When a function has multiple parameters, it is called by passing some parameters ( These parameters will never change in the future ), Then it returns a new function to receive the remaining parameters , Return results , This is the currification of functions .
function checkAge(min){
return function(age){
return age >= nim;
}
}
effect
The main purpose of front-end using Coriolis is to simplify the code structure , Improve the maintainability of the system , One way , There is only one parameter , It enforces the unity of function , It's natural to achieve functional cohesion , To reduce the coupling . The advantage of physics and chemistry is to reduce the repetition of code , Improve the adaptability of codeCall mode
function add(a,b,c){
};
var newAdd = Curry(add); // After being processed by Coriolis function add function
newAdd(1)(2)(3)
newAdd(1,2)(3);
function curry (func) {
// Get the number of formal parameters of the function , Can pass Function name .length
// args Indicates the actual parameters passed in
// Take the famous function here , Not anonymous functions , Because when the number of arguments and formal parameters are the same , You need to call this function
return function curriedFn (...args) {
// ES6 grammar
// Determine the number of actual and formal parameters
if (args.length < func.length) {
// When the passed in parameter add The remaining parameters , Equal to the number of formal parameters , Execute the following code
return function () {
// When getting this call , Incoming parameter
return curriedFn(...args.concat(Array.from(arguments)))
}
}
// When the number of arguments is greater than or equal to the number of formal parameters , call func, Return results
return func(...args) // ES6 grammar ... Expand the array
}
}
// Functions to be coriolised
function getSum (a, b, c) {
return a + b + c
}
let curried = curry(getSum)
// test
// (args.length = 3) = func.length, Call directly func, Return results
curried(1, 2, 3)
// 1. (args.length = 1) < func.length , Executing anonymous functions , call curriedFn, Pass in the parameter 2, here args.length = 2
// 2. (args.length = 2) < func.length, Executing anonymous functions , call curriedFn, Pass in the parameter 3, here args.length = 3
// 3. (args.length = 3) = func.length, Call directly func, Return results
curried(1)(2)(3)
// 1. (args.length = 2) < func.length , Executing anonymous functions , call curriedFn, Pass in the parameter 3, here args.length = 3
// 2. (args.length = 3) = func.length, Call directly func, Return results
curried(1, 2)(3)
边栏推荐
- [secretly kill little partner pytorch20 days -day01- example of structured data modeling process]
- ESP series pin description diagram summary
- sys. argv
- 【Nvidia开发板】常见问题集 (不定时更新)
- Migrate data from SQL files to tidb
- IOT -- interpreting the four tier architecture of the Internet of things
- China polyether amine Market Forecast and investment strategy report (2022 Edition)
- 1202 character lookup
- Leetcode skimming (5.29) hash table
- [MySQL] log
猜你喜欢

Cisp-pte practice explanation

Zhong Xuegao, who cannot be melted, cannot escape the life cycle of online celebrity products

Pyqt5 development tips - obtain Manhattan distance between coordinates

ROS编译 调用第三方动态库(xxx.so)

【云原生】手把手教你搭建ferry开源工单系统

pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
![[research materials] 2021 live broadcast annual data report of e-commerce - Download attached](/img/a6/74da2f44c7b6b22fed2f8e41a55988.jpg)
[research materials] 2021 live broadcast annual data report of e-commerce - Download attached

Yyds dry goods inventory three JS source code interpretation eventdispatcher

【刷题】牛客网面试必刷TOP101

vulnhub hackme: 1
随机推荐
vulnhub hackme: 1
Use dumping to back up tidb cluster data to S3 compatible storage
pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
2022.02.13 - NC002. sort
logback1.3. X configuration details and Practice
Ruffian Heng embedded bimonthly, issue 49
升级 TiDB Operator
C language - bit segment
Pyqt5 development tips - obtain Manhattan distance between coordinates
Let the bullets fly for a while
China Light conveyor belt in-depth research and investment strategy report (2022 Edition)
China polyether amine Market Forecast and investment strategy report (2022 Edition)
2. File operation - write
String to leading 0
Day29-t77 & t1726-2022-02-13-don't answer by yourself
堆排序详解
2022 Inner Mongolia latest construction tower crane (construction special operation) simulation examination question bank and answers
JS select all and tab bar switching, simple comments
MFC sends left click, double click, and right click messages to list controls
【MySQL】锁