gpt4 book ai didi

F# 令人困惑的输出

转载 作者:行者123 更新时间:2023-12-04 23:07:45 24 4
gpt4 key购买 nike

我是 F# 初学者。我运行了这个代码:

let printMsg() =
let msg = "Important"
printfn "%s" msg
let innerMsgChange() =
let msg = "Very Important"
printfn "%s" msg
printfn "%s" msg
innerMsgChange()
printfn "%s" msg

printMsg()

我预计文本输出将按以下顺序排列:

Important, Very Important, Important, Important



或这个

Important, Very Important, Very Important, Important



但我得到了这个

Important, Important, Very Important, Important



这些函数似乎不符合代码执行顺序。这是为什么,我错过了什么?

最佳答案

首先要指出的是innerMsgChange不像它的名字所 promise 的那样:它创建了一个名为 msg 的新变量。 (与外部变量完全无关,也称为 msg )值为“非常重要”,然后打印它。所以本质上它打印了字符串“非常重要”,就是这样。

那么代码是按照什么顺序执行的呢?简单的:

  • 变量 msg设置为“重要”
  • 该变量被打印出来。
  • innerMsgChange函数已定义,但未调用(这不是实际执行的步骤,因此在此行上基本上没有任何 react )
  • 变量 msg再次打印
  • innerMsgChange()叫做

    5.1.内部变量 msg设置为“非常重要”。我们将其称为 innerMsg消除歧义。

    5.2. innerMsg被打印。
  • msg (它仍然具有值“重要”,因为它与 innerMsg 完全无关)再次打印。
  • 关于F# 令人困惑的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7288719/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com