我已經開始使用F#並且一些代碼結構讓我困惑。例如:F#,賦值操作符vs集合運算符
我有下面的代碼:
let mutable s = 10
s <- 1 + s
printf "%i" s
一切都是從數學方面明確。我將「s」標記爲可變,並將新值賦給「s」。結果是11
讓我試試其它代碼的一部分:
let mutable s = 10
s = 1 + s
printf "%i" s
此代碼是工作。但是我發現s = 1 + s
在數學方面有點奇怪。執行這個的結果是10.
我的問題,最後一個樣本是怎麼回事?爲什麼我沒有收到錯誤? s = 1 + s
剛被忽略?爲什麼?我沒有在輸出中得到任何錯誤。
你說得對。我的錯誤是,我試圖在下一個方法「printf」%b「s = 1 + s」的結果。它被撞毀了。當我以下面的方式修改我的代碼「printf」%b「(s = 1 + s)」。它工作正確,並返回「假」(如預期) – RredCat 2013-04-10 11:34:01
此外,我使用http://www.tryfsharp.org - 所以有可能我有限的輸出。 – RredCat 2013-04-10 11:36:15
@RredCat我也沒有在'fsi'中得到任何警告 - 它們只在使用完整編譯器時出現 – 2013-04-10 12:35:12