什么叫pure function(纯函数)[通俗易懂]

什么叫pure function(纯函数)[通俗易懂]在Knockout中,用到了pureComputer(),其原理来自于纯函数(purefunction)。那么,什么叫纯函数呢?纯函数(来自:http://en.wikipedia.org/wiki/Pure_function)     在计算机编程中,假如满足下面这两个句子的约束,一个函数可能被描述为一个纯函数:给出同样的参数值,该函数总是求出同样的结果。该函数结

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在Knockout中,用到了pureComputer(),其原理来自于纯函数(pure function)。那么,什么叫纯函数呢?

纯函数

(来自:http://en.wikipedia.org/wiki/Pure_function

      在计算机编程中,假如满足下面这两个句子的约束,一个函数可能被描述为一个纯函数:

  1. 给出同样的参数值,该函数总是求出同样的结果。该函数结果值不依赖任何隐藏信息或程序执行处理可能改变的状态或在程序的两个不同的执行,也不能依赖来自I/O装置的任何外部的输入(通常是这样的–看下面的描述)。
  2. 结果的求值不会促使任何可语义上可观察的副作用或输出,例如易变对象的变化或输出到I/O装置。


      该结果值不需要依赖所有(或任何)参数值。然而,必须不依赖参数值以外的东西。函数可能返回多重结果值,并且对于被认为是纯函数的函数,这些条件必须应用到所有返回值。假如一个参数通过引用调用,任何内部参数变化将改变函数外部的输入参数值,它将使函数变为非纯函数。

例如:
纯函数

  • sin(x),返回实数x的sin值
  • length(s),返回串s的大小
  • encrypt(k,d),运行一个使用key k 关于日期片d的确定加密算法


非纯函数

  • 返回当前天星期几的函数是一个非纯函数,因为在不同的时间它将产生不同的结果,它引用了一些全局状态。同样地,任何使用全局状态或静态变量潜在地是非纯函数。
  • random()是非纯函数,因为每次调用潜在地产生不同的值。这是因为伪随机数产生器使用和更新了一个全局的“种子”状态。加入我们修改它去拿种子作为参数,例如random(seed),那么random变为纯函数,因为使用同一种子值的多次调用返回同一随机数。
  • printf() 是非纯函数,因为它促使输出到一个I/O装置,产生了副作用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234184.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux常用命令杀死进程_kill杀死进程命令

    linux常用命令杀死进程_kill杀死进程命令在做项目的时候经常会出现程序死机、锁死、无响应等情况,这时候就需要找到程序相应的进程将其杀掉即可。步骤如下:1.定位进程top命令:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。输入top后可以看到如下的界面,实时显示进程情况。ps命令:processstatus的简称,用于报告当…

    2022年4月19日
    235
  • 卸载烦人的赛门铁克

    卸载烦人的赛门铁克问题:电脑上SymantecEndpointProtection无法进行卸载,在卸载的时候提示需要密码。解决:网上查过很多的解决方法,比如修改相关注册表,或者使用360粉碎文件,但都没有将SymantecEndpointProtection卸载掉,最后查到需要使用CleanWipe来卸载。网上找了很多CleanWipe版本,但是卸载都是版本过低,导致卸载不了。本人使用的Cl…

    2022年4月29日
    95
  • docker入门实战笔记[通俗易懂]

    docker入门实战笔记

    2022年2月9日
    38
  • bot抢鞋软件推荐_国内bot抢鞋软件

    bot抢鞋软件推荐_国内bot抢鞋软件自动抢鞋软件bot是一款超级易于使用的抢鞋工具软件。您可以在这里关注最新最时尚鞋。时尚潮流爱好者都可以关注它。您可以轻松地发现更多时尚的新鞋。如果您要寻找的鞋子,可以直接在线下订单。在这个时候,软件会自动帮你争取速度了。您可以及时关注有关时尚鞋预售的信息。抢鞋机器人bot特色1、抢鞋机器人bot软件是一款超级好用的掌上抢鞋神器,一键快速抢鞋;2、自己拼不过大家的手速,现在就可以靠机器人为你解决,各…

    2022年4月20日
    107
  • 《软件安装与使用教程》— Python语言常用开发工具Spyder、Pycharm、VS Code、Jupyter的使用「建议收藏」

    《软件安装与使用教程》— Python语言常用开发工具Spyder、Pycharm、VS Code、Jupyter的使用「建议收藏」Python语言常用开发工具Spyder、Pycharm、VSCode、Jupyter的使用

    2022年8月25日
    7
  • 视频直播技术详解之一:开篇

    视频直播技术详解之一:开篇随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。七牛云作为一家以基础服务能力见长的云计算公司,于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣

    2022年7月21日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号