我是F#初學者。我跑這個代碼: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()
我預計,文本輸出將是這個順序:
重要,非常重要的,重要,重要的
或本
重要,非常重要,非常重要,重要
,但我得到這個
重要,重要的,非常重要的,重要
似乎這些功能不符合代碼執行順序。爲什麼呢,我錯過了什麼?
在調用它之前,您的函數不會執行。你有兩個名爲'msg'的變量 - 一個隱藏另一個。 – Daniel
你可能會發現這個問題有幫助看看: http://stackoverflow.com/questions/2478079/f-shadowing-and-nested-function – Brian