• [Javascript] Understand Function Composition By Building Compose and ComposeAll Utility Functions


    Function composition allows us to build up powerful functions from smaller, more focused functions. In this lesson we'll demystify how function composition works by building our own compose and composeAll functions.

    // __test__ 
    
    import {add, inc, dbl, addInc, addIncDbl} from '../function/custom-compose';
    
    describe('basic fns', () => {
        "use strict";
        test('add', () => {
            const res = add(1,2);
            const expected = 3;
            expect(res).toBe(expected);
        });
    
        test('inc', () => {
            const res = inc(2);
            const expected = 3;
            expect(res).toBe(expected);
        });
    
        test('dbl', () => {
            const res = dbl(2);
            const expected = 4;
            expect(res).toBe(expected);
        });
    });
    
    describe('compose', () => {
        "use strict";
        test('add then inc', () => {
            const res = addInc(4, 2);
            const expected = 7;
            expect(res).toBe(expected);
        });
    });
    
    describe('composeAll', () => {
        "use strict";
       test('add, inc then dbl', () => {
           const res = addIncDbl(2, 3);
           const expected = 12;
           expect(res).toBe(expected);
       }) ;
    });
    /*
    * Utils
    * */
    const compose = (f, g) => (...args) => f(g(...args));
    
    const composeAll = (...fns) => fns.reduce(compose);
    /*
    * Libs
    * */
    export const add = (a, b) => a + b;
    
    export const inc = (a) => a + 1;
    
    export const dbl = (a) => a * 2;
    
    export const addInc = compose(inc, add);
    
    export const addIncDbl = composeAll(dbl, inc, add);
  • 相关阅读:
    selenium的鼠标事件操作
    selenium选择框
    selenium的三种等待方法
    selenium定位方法-iframe元素定位方法
    selenium的元素定位方法-By
    selenium的定位方法-多元素定位
    selenium的定位方法-单元素定位
    GUP架构---显卡(一)
    关于不同开发语言之间,内存(数据or对象)交互之间的一些总结
    tolua中的peer表简单总结
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6667130.html
Copyright © 2020-2023  润新知