2010-03-05 22 views

Répondre

4

Notez également que vous faites face à ce problème que lorsque vous entrez le code F # ligne par ligne interacative. Si vous entrez dans la première ligne sans fournir des annotations de type, vous obtiendrez l'erreur:

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

Cependant, si vous entrez un porition plus grand de code qui utilise la cellule ref x (par exemple attribue une valeur à elle) alors F # sera capable de déduire le type de la dernière partie du code, donc vous n'aurez besoin d'aucune annotation de type. Par exemple:

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

Cela fonctionne bien, parce que F # va déduire le type de x de la deuxième ligne. Cela signifie que vous ne devriez probablement pas avoir besoin d'annotations de type si vous envoyez le code à F # de manière interactive pour le tester en plus grandes parties (et dans un code F # compilé, vous ne rencontrerez presque jamais ce problème).