当前位置: 首页 > news >正文

网站建设管理网络推广与营销

网站建设管理,网络推广与营销,策划书怎么写 格式范文,拓者设计吧室内设计论坛0.前言 函数式编程拥有更好的,组合性,灵活性,容错性,相比面向对象编程。 函数式编程入门,需理解“纯函数”,“柯里化”,“函数组合”这三个概念。 PS:本篇文章的案例使用ramdajs工具库。 1.纯函…

0.前言

函数式编程拥有更好的,组合性,灵活性,容错性,相比面向对象编程。
函数式编程入门,需理解“纯函数”,“柯里化”,“函数组合”这三个概念。
PS:本篇文章的案例使用ramdajs工具库。

1.纯函数

什么是纯函数?
相同输入,相同输出,无副作用。
什么是副作用?请看例子。
demo 1-0:

var array1 = [1,2,3,4,5];
var array2 = [1,2,3,5,5];// 纯函数,它没有改变array1数组
array1.slice(0,3);
//=> [1,2,3]
array1
//=> [1,2,3,5,5]// 非纯函数,副作用是改变了array2数组
array2.splice(0,3);
//=> [1,2,3]
array2
//=> [4,5]

demo 1-1:

// 纯函数
var checkAge = function(number) {var innerVariable = 12;return number >= innerVariable;
};// 非纯函数,依赖外部变量。因为外部变量不可控,所以副作用是函数返回的值不可控。
var externalVariable = 12;
var checkNumber = function(number) {return number >= externalVariable;
};
checkNumber(18);
//=> true
externalVariable = 20;
checkNumber(18);
//=> false

2.柯里化

没有你之前,无可厚非;有了你之后,不可或缺。
你就是柯里化。
那么什么是柯里化?
传给一个函数部分参数,返回一个函数去处理剩余参数。
当然,被柯里化的函数,都是纯函数。
具体理解,请看例子。
demo 2-0

var R = require('ramda');
var minus = function(a, b){ return a- b };
var curryMinus = R.curry( minus );
// R.__是参数占位符
var minus5 = curryMinus( R.__, 5 );
minus5(33);
//=> 28
var minus5Second =curryMinus(5, R.__);
minus5Second(33);
//=> -28

柯里化是函数组合的基础。因为它能保留任何参数的位置。

3.函数组合

相比面向对象的复用,需涉及到类继承的重构,虚方法,重写方法,甚至是抽象类,接口实现等概念,
函数式编程的函数组合概念,则更加自然易懂。
请看例子。
demo 3-0

var R = require('ramda');
var add = R.curry(function (a, b) {return a + b;
});
var subtract = R.curry(function(a, b){return a - b;
});// 如果你没有传入参数占位符,缺省选中第一个参数
var add9 = add(9);
var subtract1 = subtract(1, R.__);// 33这个值先经过subtract1运算,再经过add9运算,从右往左。
var result = R.compose(add9, subtract1);
result(33);
//=> 41

告一段落

在这里,我们已经知道函数式语言的三个基本概念纯函数,柯里化,函数组合。
并且可以运用函数组合,建一个纯函数组成的河流,让数据流动。
但编程里面还有控制流(control flow)、异常处理(error handling)这些概念,
以后有空写续集。
我认为,函数式语言的美妙之处是可以更加清晰地描述事物,相比自然语言。

http://www.lbrq.cn/news/2662705.html

相关文章:

  • 有人情味的网站公司网络推广方法
  • 昆明疫情最新消息今日新增seo也成搜索引擎优化
  • 服装网站欣赏深圳高端网站制作公司
  • 綦江网站建设公司广告接单网站
  • 网站的时间对齐应该怎么做企业网络推广平台
  • 公司如何登录网站做就业登记网站站长
  • 网站的链接优化做销售记住这十句口诀
  • 山东网站开发制作网易疫情实时最新数据
  • 无锡个人网站建设热狗seo外包
  • 网站地址正能量产品营销推广
  • 苏州做管网gis的网站百度上搜索关键词如何在首页
  • 长沙 外贸网站建设公司企业推广网络营销外包服务
  • 网站建设bannerseo专员很难吗
  • 合肥网站建设服务平台网络营销事件
  • ui网站设计模板最近一周新闻大事摘抄2022年
  • 绍兴企业网站推广seo下拉优化
  • 外贸php网站源码seo内容优化心得
  • 青岛网站建设公司怎么选优化网络搜索引擎
  • wordpress收不到网站搜索引擎优化实训心得
  • 怎么做二手房网站站长工具是什么意思
  • 浙江网站建设前十的公司bt磁力
  • 网站怎么备案百度seo关键词排名优化教程
  • 企业网站改版建议百度手机版网址
  • 电商行业网站建设及维护城市更新论坛破圈
  • 张店政府网站建设哪家好360优化大师官方下载最新版
  • phpcms建站教程搜狗搜索引擎推广
  • 提供网站建设小程序制作网络营销管理
  • 怎么看网站有没有做竞价今天高清视频免费播放
  • 响应式网站开发遇到的问题如何开发软件app
  • 网站建设基本范例百度排行榜
  • PostgreSQL 批量COPY导入优化参数配置
  • Python设计模式 - 装饰模式
  • Qt—— 下载、工具介绍以及新建项目
  • 【Datawhale AI夏令营】从Baseline到SOTA:深度剖析金融问答RAG管道优化之路
  • 视图是什么?有什么用?什么时候用?MySQL中的视图
  • Python樱花树