2010-03-05 75 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#代码中,您几乎不会遇到此问题),则您可能不需要任何类型注释。