Ramda风格思维:结论

1.第一步
2.结合功能
3.部分使用(咖喱)
4.声明式编程
5.典型符号
6.不变性与对象
7.不变性和数组
8.镜片
9.结论


这篇文章完成了一系列有关函数式编程的文章,称为Ramda样式思维。


在最后八篇文章中,我们讨论了Ramda JavaScript库,该库提供了以功能,声明和不可变的样式使用JavaScript的功能。


在本系列文章中,我们了解到Ramda的API遵循一些基本原则:


  • 数据排在最后:几乎所有函数都接受一个以数据作为最后一个参数的参数。
  • 咖喱:Ramda中几乎所有功能都被咖喱。 也就是说,您可以仅使用部分必需参数调用函数,然后获取一个新函数,该函数将等待其余参数。 一旦提供了所有参数,就会调用原始函数。

这两个原则使我们能够编写非常干净的功能代码,将基本构建块集成到更强大的操作中。


总结


作为参考,这是一系列文章的简短摘要。


  • 第一步是通过函数,纯函数和不变性的思想呈现给我们的。 然后,她向我们介绍了集合迭代函数,例如mapfilterreduce
  • 组合函数向我们展示了如何使用pipecompose等工具以各种方式组合函数。
  • 部分使用(currying)有助于我们了解何时以及如何为函数提供一些参数,并在以后提供其余参数。 我们使用currycurry来帮助我们,并学习flip和占位符( __
  • 声明式编程教会我们命令式和声明式编程之间的区别。 我们将学习如何将Ramda声明式替代物用于算术,比较,逻辑和条件。
  • 无知的表示法引入了无知的样式的概念,也称为“静音编程”。 以一种毫无意义的方式,我们看不到正在处理的数据的参数,这是隐式完成的。 我们的程序由一些简单的小块组成,这些小块可以一起完成我们所需的工作。 只有在最后,我们才将复合函数应用于相关数据。
  • 不变性和对象使我们回到以声明式样式工作的想法,这是时候获取我们需要读取,更新,修改,删除和转换对象属性的工具了。
  • 不变性和数组继续本主题,并向我们展示了如何对数组执行类似的操作。
  • 镜头通过介绍镜头的概念来完善该系列,该设计使我们可以专注于大型数据结构的一小部分。 使用viewsetover函数,我们可以在大型数据结构的背景下读取,更新和转换镜头所关注的值。

接下来是什么?


在本系列文章中,我们并未涵盖Ramda的所有复杂之处。 特别是,我们没有讨论字符串函数,也没有讨论更复杂的概念,例如转换器


为了了解有关Ramda可以做什么的更多信息,建议您研究其文档 。 有大量的信息。 所有功能按它们使用的数据类型分组,尽管有一些重叠。 例如,一些用于数组的函数也可以用于字符串,而map可以用于数组和对象。


如果您对更复杂的功能主题感兴趣,可以在以下几个地方找到:


  • 换能器:在这里您可以阅读有关如何使用换能器解析日志的出色介绍性文章
  • 代数数据类型:如果您对函数式编程了解得足够多,那么您会听说过代数类型以及诸如“ Functor”,“ Applicator”和“ Monad”之类的术语。 如果您有兴趣在Ramda的上下文中探索这些想法,请查看ramda-fantasy项目,该项目实现了一些符合Fantasy Land规范 (或代数JavaScript规范)的数据类型。



从文章翻译的作者那里:如果我感到满意 ,我将继续翻译有关Ramda的文章 ,尤其是,我希望翻译一篇关于将ramda与redux结合使用 的文章一篇关于具有React无状态功能的功能组件的文章,以及Ramda关于模块化缩减器和选择器的一篇文章 ,可能还有一篇关于redux选择器全球化的文章

Source: https://habr.com/ru/post/zh-CN415037/


All Articles