编程风格
这一栏是关于编程风格的文章,欢迎观看
ZhandsomeZ
走过的路脚记得,爱过的人心记得
展开
-
函数式编程-task函子
简介folktale中的函子处理异步任务,在这里使用的是2.x的版本//引用find和split方法const { find, split } = require('lodash/fp');//引用fsconst fs = require('fs');//引用taskconst { task } = require('folktale/concurrency/task');function readFile(fileName) { return task(resol.原创 2020-08-06 14:06:59 · 247 阅读 · 0 评论 -
函数式编程-folktale篇
简介函子可以把我们控制副作用进行异常处理,还可以去处理异步任务,因为在异步操作中会出现通往地狱之门的回调。使用task函子可以避免出现回调的嵌套,因为异步任务的实现归复杂和这块使用了folktale,这个库中提供的task函子来进行演示。folktale是个标准的函数式编程库,它和lodash、ramda不同的是,它里面没有提供功能性的函数,比如lodash和ramda 的中都提供了很多数组和字符串操作相关的方法。但是folk tale中只提供了一些跟函数式处理相关的操作,例如compo.原创 2020-08-06 14:06:24 · 10920 阅读 · 0 评论 -
函数式编程-IO函子篇
简介原创 2020-08-05 10:05:32 · 564 阅读 · 0 评论 -
函数式编程-Either函子篇
简介either两者中的任意一个,类似于if else的处理异常会让函数变得不纯,either函子可以用来做异常处理举例class Left { static of(value) { return new Left(value) } constructor(value) { this._value = value; } map(fn) { return this }}class Right {.原创 2020-08-05 10:04:55 · 522 阅读 · 0 评论 -
函数式编程-Maybe函子篇
简介我们在编程的过程中可能会遇到很多错误,需要对这些错误做相应的处理maybe函子的作用就是可以对外部的空值情况做处理(控制副作用在允许的范围)如下举例//maybe函子 处理异常函子class Maybe { static of(value) { return new Maybe(value) } constructor(value) { this._value = value; } map(fn) { .原创 2020-08-04 08:22:41 · 291 阅读 · 0 评论 -
函数式编程-Functor篇
概念111111111111111111111111原创 2020-08-04 08:21:55 · 249 阅读 · 0 评论 -
函数式编程-PointFree篇
概念其实是一种编程方式原创 2020-08-03 08:19:26 · 762 阅读 · 0 评论 -
函数式编程-lodash-fp模块篇
简介在之前的文章中都是手动实现柯里化,其实在lodash已经提供了柯里化的方法//通过 lodash的fp模块const fp = require('lodash/fp');let test2 = "HTML CSS PRODUCT JAVA NODE"const f3 = fp.flowRight(fp.join('-'), fp.map(_.toLower), fp.split(" "))console.log(f3(test2));//html-css-product-java原创 2020-08-03 08:18:31 · 11123 阅读 · 2 评论 -
函数式编程-组合函数调试篇
简介在使用组合函数中遇到了,结果和预期的不一致,该如何调试呢,接下来给大家揭秘原创 2020-08-02 11:32:47 · 10631 阅读 · 0 评论 -
函数式编程-函数组合篇
概念纯函数和柯里化很容易写出洋葱代码_.toUpper(_.first(_.reverse(array))); //这样就是洋葱代码 一层套一层函数组合可以把细粒度的函数重新组合成一个新函数函数组合(compose):如果一个函数要经过多个函数处理才能得到最终值,这个时候可以把中间过程的函数合并成一个函数函数就像是数据的管道,函数组合就是把这些管道连接起来,网数据穿过多个管道形成最终的结果 函数组合默认是从右往左执行function compose(f, g) { ret.原创 2020-08-02 11:30:42 · 10778 阅读 · 0 评论 -
函数式编程-柯里化原理实现篇
本篇文章主要是柯里化原理实现lodash实现柯里化const _ = require('lodash');function getSum(num1, num2, num3) { return num1 + num2 + num3}const curried = _.curry(getSum);console.log(curried(1, 2, 3)); //6console.log(curried(1, 2)(3)); //6console.log(curried(.原创 2020-08-02 11:30:09 · 415 阅读 · 0 评论 -
函数式编程-lodash中使用柯里化
在lodash中使用柯里化const _ = require('lodash');function getSum(num1, num2, num3) { return num1 + num2 + num3}const curried = _.curry(getSum);console.log(curried(1, 2, 3)); //6console.log(curried(1, 2)(3)); //6console.log(curried(1)(2, 3)); //66原创 2020-08-01 09:10:08 · 588 阅读 · 0 评论 -
函数式编程-柯里化篇
简介原创 2020-08-01 09:09:23 · 268 阅读 · 0 评论 -
函数式编程-lodash篇
简介Lodash是一个一致性、模块化、高性能的 JavaScript 实用工具库。安装初始化npm init -y安装依赖 cnpm i lodash 项目中使用const _ = require('lodash');简单使用const array = ['spring', 'second', 'third', 'four', 'five'];console.log(_.first(array)); //数组中第一个元素console.log(_.each(arr.原创 2020-07-31 09:02:39 · 368 阅读 · 2 评论 -
函数式编程-纯函数篇
概念:相同的输入永远会得到相同的输出,且没有任何可观察的副作用纯函数就类似数学中函数(用来描述输入和输出之间的关系)例如y=f(x)举例数组中的slice和splice分别是纯函数和不纯的函数纯函数console.log(arr1.slice(0, 3)); //[1,2,3]console.log(arr1.slice(0, 3)); //[1,2,3]console.log(arr1.slice(0, 3)); //[1,2,3]function getSum(num1, .原创 2020-07-31 09:01:34 · 10613 阅读 · 0 评论 -
函数式编程-闭包篇
闭包的概念闭包(closure):函数和其周围的状态(词法环境)的引用捆绑在一起形成闭包作用:可以在另一个作用域中调用一个函数的内部函数并访问到该函数的作用域中的成员案例:案例1:function MakePower(power) { return function(number) { return Math.pow(number, power) }}//求平方let num2 = MakePower(2);//求立方let num3 = MakePow.原创 2020-07-30 16:59:28 · 177 阅读 · 0 评论 -
函数式编程-函数篇
函数在jJavaScript中是一等公民函数的用法1、函数可以存储在变量中2、函数作为参数使用3、函数作为返回值使用1、函数赋值给变量const fun3 = () => { console.log('this is function');}2、函数作为参数使用通过重写高阶函数带大家认识一下重写数组 forEach 方法 遍历数组中的每一个元素let arr = [1, 3, 5, 7, 9, 11, 33, 55, 66, 77, 88, 99]functi.原创 2020-07-30 16:57:27 · 153 阅读 · 0 评论 -
函数式编程-概念篇
概念函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里函数的计算可随时调用。理解函数式编程(Function ProgramMing,FP),FP是编程范式之一,我们常说的编程范式还是面向对象编程和面上对象编程面向对象编程的思维方式:把现实世界中的事物抽象成程序,通过封.原创 2020-07-28 08:58:12 · 248 阅读 · 0 评论