2009-07-09 7 views
1

Tenir compte du fragment de code suivant dans VS2010 Beta 1:Création d'un Array2D en F # (VS2010 Beta 1)

 
let array = Array2D.zeroCreate 1000 500 

Cela produit une erreur, à savoir:

 
error FS0030: Value restriction. The value 'array' has been inferred to have 
generic type val array : '_a [,] 
Either define 'array' as a simple data term, make it a function with explicit 
arguments or, if you do not intend for it to be generic, add a type annotation. 

Puis-je définir explicitement le type (dans mon cas une grille de ficelle)?

Répondre

6

Vous pouvez spécifier explicitement le type comme ceci:

let array : string [,] = Array2D.zeroCreate 1000 500 

Pour plus d'informations sur la restriction de valeur que vous pouvez jeter un oeil à this F#-Wiki page.

3

Vous pouvez également utiliser init pour créer un tableau bien qu'il soit plus lent.

let array = Array2D.init 1000 500 (fun _ _ -> "") 

La mise à zéro d'une matrice n'est généralement pas visible en programmation fonctionnelle. Il est beaucoup plus commun de passer une fonction d'initialisation à init et de simplement créer le tableau avec les valeurs que vous voulez.

1

Pour créer un tableau à 2 dimensions contenant des chaînes vides:

let array = Array2D.create 1000 500 "" 
Questions connexes