当前位置:网站首页>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)
边栏推荐
- Introduction to number theory (greatest common divisor, prime sieve, inverse element)
- Nacos Development Manual
- Restore backup data on S3 compatible storage with br
- Tidb backup and recovery introduction
- Research and investment forecast report of citronellol industry in China (2022 Edition)
- Hill sort c language
- How to use information mechanism to realize process mutual exclusion, process synchronization and precursor relationship
- 使用 BR 备份 TiDB 集群数据到兼容 S3 的存储
- [research materials] 2021 China online high growth white paper - Download attached
- Leetcode skimming (5.29) hash table
猜你喜欢
Yyds dry goods inventory three JS source code interpretation eventdispatcher
Pointer advanced --- pointer array, array pointer
2022.02.13 - 238. Maximum number of "balloons"
Configuring OSPF load sharing for Huawei devices
根据csv文件某一列字符串中某个数字排序
JVM performance tuning and practical basic theory - Part 1
Summary of phased use of sonic one-stop open source distributed cluster cloud real machine test platform
From monomer structure to microservice architecture, introduction to microservices
Chinese Remainder Theorem (Sun Tzu theorem) principle and template code
IP lab, the first weekly recheck
随机推荐
Leetcode skimming (5.29) hash table
Deep learning: derivation of shallow neural networks and deep neural networks
【Nvidia开发板】常见问题集 (不定时更新)
Migrate data from CSV files to tidb
化不掉的钟薛高,逃不出网红产品的生命周期
leetcode刷题 (5.29) 哈希表
1202 character lookup
[MySQL] lock
LDAP application (4) Jenkins access
备份与恢复 CR 介绍
Sort according to a number in a string in a column of CSV file
C language custom type: struct
Hcip day 16
面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读
使用 TiUP 升级 TiDB
tree树的精准查询
[research materials] 2022 enterprise wechat Ecosystem Research Report - Download attached
Online yaml to CSV tool
ESP系列引脚说明图汇总
【MySQL】数据库的存储过程与存储函数通关教程(完整版)