当前位置:网站首页>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)
边栏推荐
- Permutation and combination function
- JVM performance tuning and practical basic theory - Part 1
- 升级 TiDB Operator
- VMware virtualization cluster
- CAD ARX gets the current viewport settings
- 1. Color inversion, logarithmic transformation, gamma transformation source code - miniopencv from zero
- Day29-t77 & t1726-2022-02-13-don't answer by yourself
- Nacos Development Manual
- Online yaml to CSV tool
- 从 TiDB 集群迁移数据至另一 TiDB 集群
猜你喜欢

Pyqt5 development tips - obtain Manhattan distance between coordinates

Personalized online cloud database hybrid optimization system | SIGMOD 2022 selected papers interpretation

Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development

2. File operation - write

【MySQL】鎖

Configuring OSPF load sharing for Huawei devices

2022.02.13 - NC001. Reverse linked list

From monomer structure to microservice architecture, introduction to microservices

2022.02.13 - NC002. sort

Unified ordering background interface product description Chinese garbled
随机推荐
CAD ARX gets the current viewport settings
Online yaml to CSV tool
Zhong Xuegao, who cannot be melted, cannot escape the life cycle of online celebrity products
Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development
Research Report on Market Research and investment strategy of microcrystalline graphite materials in China (2022 Edition)
Unified ordering background interface product description Chinese garbled
NFT smart contract release, blind box, public offering technology practice -- contract
Restore backup data on S3 compatible storage with br
Use dumping to back up tidb cluster data to S3 compatible storage
Asia Pacific Financial Media | female pattern ladyvision: forced the hotel to upgrade security. The drunk woman died in the guest room, and the hotel was sentenced not to pay compensation | APEC secur
leetcode刷题 (5.28) 哈希表
JVM performance tuning and practical basic theory - Part 1
【云原生】手把手教你搭建ferry开源工单系统
指针和数组笔试题解析
[research materials] 2021 China online high growth white paper - Download attached
On the day of resignation, jd.com deleted the database and ran away, and the programmer was sentenced
leetcode刷题 (5.29) 哈希表
MySQL learning record 10getting started with JDBC
China dihydrolaurenol market forecast and investment strategy report (2022 Edition)
1202 character lookup