当前位置:嗨网首页>书籍在线阅读

05-纯函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

纯函数

“纯”函数是指不会带来其他影响,其返回值只受函数参数或nonvolatile全局变量影响。任何参数或全局访问都只支持“只读”模式。循环优化和消除子表达式的场景可以使用纯函数。纯函数是通过关键字pure来标识的:

587.png 一个常见的示例是strlen()。只要输入相同,对于多次调用,该函数的返回值都是一样的。因此可以从循环中抽取出来,只调用一次。举个例子,对于下面的代码:

588.png 如果编译器不知道strlen()是纯函数,它就会在每次循环迭代时都调用该函数。

有经验的编程人员或编译器,如果认为strlen()是纯函数——就会编写/生成如下代码:

589.png 但是,更聪明的编程人员(比如本书的读者)会编写如下代码:

590.png 纯函数不能返回void类型,这么做也没有意义,因为返回值是纯函数的“灵魂”。非纯函数的一个示例是random()。