2010-03-05 76 views
4

我需要在F#中創建一個可變的option<T>類型。我試着寫如何創建F#可變選項類型?

let x = ref None 

,然後寫入

x := Some(z) 

,但它不工作。幫幫我!

+0

只是想知道,但爲什麼你會需要一個可變選項? – Juliet 2010-03-06 16:08:15

回答

4

另外請注意,您在面對F#中輸入代碼interacative行由行,只有當這個問題。如果輸入的第一行不提供類型的註釋,你會得到錯誤:

> let x = ref None;; 
// Tests.fsx(1,7): error FS0030: Value restriction. 

但是,如果你輸入的代碼較大porition使用該x裁判細胞(例如值賦給它)那麼F#將能夠從代碼的後面部分推斷出該類型,因此您不需要任何類型註釋。例如:

> let x = ref None 
    x := Some(10);; 

這將正常工作,因爲F#將會從第二行推斷x類型。這意味着如果您將代碼交互地發送到F#以進行大部分測試(並且在編譯的F#代碼中,您幾乎不會遇到此問題),則您可能不需要任何類型註釋。