该功能如何运作?

Sal*_*ara 0 f#

我面对这段代码

let quadruple x =    
    let double x =
        x * 2
Run Code Online (Sandbox Code Playgroud)

并且提到 四倍调用双重函数两次以执行(低效)四倍.

怎么会发生?我认为四倍得到x然后x将被传递给在四倍中定义的double.因此,它必须作为堆栈工作.

它首先计算x*2然后将结果返回到四元组并且结束.

那么为什么quadruple会调用double函数两次

byt*_*ter 5

原始代码段缺少一行.它必须如下所示:

let quadruple x =    
    let double x =
        x * 2
    double(double x)
Run Code Online (Sandbox Code Playgroud)

这样写,double只是内部定义的子功能quadruple.这只是一个定义.除非被召唤,否则它什么都不做.

最后一行属于quadruple.确实,首先double使用x参数调用,然后使用接收到的结果再次调用它,实际上使原始值翻两番.