新闻  |   论坛  |   博客  |   在线研讨会
SC510 3BSE003832R1 参数在应用之前被完全求值
15359029662 | 2023-03-29 18:32:26    阅读:73   发布文章

SC510 3BSE003832R1  参数在应用之前被完全求值

SC510 3BSE003832R1  参数在应用之前被完全求值

计算顺序主要在代码中可见副作用,但它也会影响代码的性能,因为严格的顺序会抑制指令调度。由于这个原因,尽管Java和C#等语言将求值顺序定义为从左到右,但C++等语言标准通常不指定顺序[8]: 240–241C++17标准增加了对评估顺序的限制。[19]

严格评估 [编辑]

适用顺序是一系列求值顺序,在这些顺序中,函数的参数在应用之前被完全求值。[20]这具有使函数严格的,即如果任何参数未定义,则函数的结果也未定义,因此应用顺序评估更常被称为严格评估。此外,一旦在过程中遇到函数调用,就会立即执行它,因此它也被调用热切的评价或者贪婪评估[21][22]一些作者将严格求值称为“按值调用”,因为按值调用绑定策略需要严格求值。[4]

常见的Lisp,埃菲尔和Java从左到右计算函数参数。c不定义顺序。[23]Scheme要求执行顺序是参数的未指定排列的顺序执行。[24] OCaml类似地,不指定顺序,但实际上由于其设计,从右向左计算参数抽象机器[25]这些都是严格的评价。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客