满足如下2个条件的函数视为纯函数:
  • The function always evaluates the same result value given the same argument value(s)
    • 无论执行多少次函数,只要参数相同,返回值就一定相同
    • 函数内部不会使用全局变量,随机数等等可能可能改变结果的操作。

  • Evaluation of the result does not cause any semantically observable side effect or output, such as mutation of mutable objects or output to I/O devices (usually—see below).
    • 不会有副作用。
      • 所谓副作用,就是在函数中除了生成返回值,还执行一些产生其他效果的操作。比如修改了一个全局变量,修改某个文件,写了一次数据库等等


The result value need not depend on all (or any) of the argument values. However, it must depend on nothing other than the argument values.
  • The function may return multiple result values and these conditions must apply to all returned values for the function to be considered pure.
  • If an argument is passed by reference, any parameter mutation will alter the value of the argument outside the function, which will render the function impure.[citation needed]



2.纯函数的好处:
  • 因为函数式编程中函数的结果只依赖于参数(不会使用全局变量)
    所以函数式编程利于:
    • 并行编程
    • cache函数的结果,提升性能
      • 如果参数相同,则直接返回结果即可

2.纯函数pure function

2019-02-18 00:15:08 0 84
这里是评论

相关推荐