当前位置:网站首页>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)
边栏推荐
- Remote storage access authorization
- Yyds dry goods inventory three JS source code interpretation eventdispatcher
- MySQL learning record 11jdbcstatement object, SQL injection problem and Preparedstatement object
- IP lab, the first weekly recheck
- JVM 快速入门
- Cisp-pte practice explanation
- Upgrade tidb with tiup
- Sort according to a number in a string in a column of CSV file
- On the day of resignation, jd.com deleted the database and ran away, and the programmer was sentenced
- matplotlib. Widgets are easy to use
猜你喜欢

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

Unified ordering background interface product description Chinese garbled

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

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

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

Pyqt5 development tips - obtain Manhattan distance between coordinates

【刷题】牛客网面试必刷TOP101
![[research materials] 2021 Research Report on China's smart medical industry - Download attached](/img/c8/a205ddc2835c87efa38808cf31f59e.jpg)
[research materials] 2021 Research Report on China's smart medical industry - Download attached

2022.02.13 - 238. Maximum number of "balloons"

tree树的精准查询
随机推荐
hcip--mpls
Hcip day 16
China's high purity aluminum target market status and investment forecast report (2022 Edition)
使用 TiDB Lightning 恢复 S3 兼容存储上的备份数据
Bottom up - physical layer
Leetcode question brushing (5.28) hash table
pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
Cisp-pte practice explanation
Leetcode question brushing (5.31) string
[2022 Guangdong saim] Lagrange interpolation (multivariate function extreme value divide and conquer NTT)
2022.02.13 - NC004. Print number of loops
灰度升级 TiDB Operator
【MySQL】锁
Résumé des diagrammes de description des broches de la série ESP
MySQL learning record 07 index (simple understanding)
Day29-t77 & t1726-2022-02-13-don't answer by yourself
Golang force buckle leetcode 1020 Number of enclaves
使用 Dumpling 备份 TiDB 集群数据到兼容 S3 的存储
logback1.3. X configuration details and Practice
Restore backup data on S3 compatible storage with tidb lightning