设为首页 - 加入收藏  
您的当前位置:首页 >人工智能 >从JS中学习函数式编程的五项支柱 正文

从JS中学习函数式编程的五项支柱

来源:亿华互联编辑:人工智能时间:2025-11-05 15:56:18

 一、从J程什么是中柱函数式编程

从FP函数式编程的眼中看来,世界的学习项支万事万物就是处理数据流:

input --> process -- output  

FP函数式编程是一种思维方式:

比如非函数式,会这样写程序:

> var name = "gaowei"; > var greeting = "Hello,函数Im ";; > console.log(greeting + name) Hello,Im gaowei 

 而函数范式编程则会这样写程序:

> function greet(name) { ... return "Hi, Im " + name; ... } > greet("Gaowei"); "Hi, Im Gaowei" 

 二、用纯函数 pure-function,式编避免 副作用 side-effects

举例说明“非纯函数”,从J程

> let name = "Gaowei"; > function greet() { ... console.log("Hi,中柱 Im " + name); ... } > greet() Hi, Im gaowei 

 这就不是一个纯函数,服务器租用因为没有返回结果。学习项支

而纯函数则是函数:

> function greet(name) { ... return "Hi, Im " + name; ... } 

 三、使用高阶函数 higher-order-function,式编函数本身可作为输入或者输出

在高阶函数中,从J程函数本身又可作为输入与输出。中柱

> function setAdjectifier(adjective) { ... return function(description) { ..... return adjective + " " + description; ..... } ... } > let greatifier = setAdjectifier("great"); > greatifier("meeting") great meeting 

 四、学习项支不要迭代,函数用 map,式编 reduce 和 filter

map与filter之间的关联与区别,可以参见下面这张图:

五、不要更改输入数据,源码下载用不可变更的数据结构

举例,我们惯常的做法常常为:

> let fruits = [apple, banana, peach]; > fruits[2] = orange orange > fruits [ apple, banana, orange ] 

 上面的mutation的处理方法,将会修改原始数据。

尝试 functional-programming的方式为:

> newFruits = fruits.map( rm => rm == "orange" ? "peach" : rm) [ apple, banana, peach ] > fruits [ apple, banana, orange ] 

 而能够高效处理 immutable 数据的常用库为:Mori, immutable.js, Underscor, Lodash, Ramda 等。

云南idc服务商
上一篇:ubuntu用户现在已经确切的了解到关于unity8集成到ubuntu桌面的相关计划。ubuntu桌面其实还并没有引起更多开发者的足够关注,不过现在这种状况正在得到更快的改变。Canonical的ubuntu桌面团队经理,Will Cooke,最近谈到了关于unity桌面的一些未来规划,以及未来几个ubuntu版本的计划。可能已经有许多ubuntu用户,已经发现,有越来越多的ubuntu开发者正在把他们的精力放在了ubuntu的移动端平台上,与此同时,关注桌 面端ubuntu的开发者要比平常少了不少。这或许是因为,大家都认为,来自ubuntu touch的大量改进和优化,形成的成果最终也会汇集到桌面端吧!其实吧,并不是所有的人都相信,现在在ubuntu touch上的桌面环境,会让未来的ubuntu桌面端一样变得更强大,而且,所说的未来其实也没多久远!事实上,要比大家想想的更为靠近!下一代Ubuntu LTS会默认采用unity8ubuntu的移动平台正在使用unity8 ,这货不同于当前桌面端使用的unity7,毕竟人家使用了很多期待中的有趣特性。ubuntu的开发人员几乎花费了超过2年的时间,就是为了能让 unity8能在ubuntu phone和ubuntu touch上完美运行,所以为了这样的目的,几乎付出了他们的所有努力。Canonical的新晋桌面团队经理,Will Cooke ,详细的解释unity8的发展蓝图,即将发布的ubuntu14.10的默认桌面依然会是unity7 ,unity8仅会以开发者预览版的形式作为一种可选项予以提供,ubuntu15.04仍然会将unity7作为默认桌面,不过unity8将作为可替 代选项予以提供,而将unity8作为默认桌面最有可能是在ubuntu15.10发行版中。Will说“可能”,是因为他不确定,在那之前,会不会发生一些不可预料的事情影响进度,ubuntu开发人员可能会准备好,也可能不会,所以看情况了。不过,可以确定的是,unity8一定会作为ubuntu16.04这个长期支持版的默认使用桌面。为什么ubuntu新桌面是如此特别?你可能会认为,unity8仅仅是一种桌面环境的升级罢了,而事实上,它远不只如此!由于unity8的构建方式,当开发者发布新的应用和更新,终端用户会更快速的收到相关的包版本,而不用再等待新版本的ubuntu来获取相关的重要应用或者二进制包!“通常来说,新版本的ubuntu发布,会伴随有新版本的相关应用更新,当然也必然包含有重要的安全更新和BUG修复,但是为了获得相关更新,你不 得不耐心的等待新版本的ubuntu的发布,以及相关应用的重大更新才可以。而新版本的unity8工作机制,保证了开发者将其应用更新实时推送到客户端 面前而不需要等待,毫无疑问,终端用户会因此而获益多多!”Will Cooke这样说。社区阻力依然存在对Canonical来说,unity8是一个重大的改变,也正是因为如此,从一开始,就感受到来自社区的巨大质疑和阻力,这也是众所周知的!幸运 的是,unity8项目从一开始还是被绝大多数人认可,当然了也有人认为unity7才是最棒的,而unity8是个失败品。这也是没办法的事了!Canonical如今提供了使用unity8的另一个镜像(点击浏览),我们称之为“NEXT”!这是一个live CD,能够展现大概的功能,不过这货是基于一个超大号的tablet!期待吧,愚蠢的地球人,希望明年有足够的时间让大家用上新版本的unity!谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。
下一篇:探索oppo耳机的卓越音质和舒适体验(了解oppo耳机的技术优势和用户口碑)

相关推荐:

0.647s , 11665.765625 kb

Copyright © 2025 Powered by 从JS中学习函数式编程的五项支柱,亿华互联  滇ICP备2023000592号-16

sitemap

Top