Je vous écris mon code comme si ceux-ci sont la même chose, et ne pas avoir des problèmes, mais il commence à me confondre quand je passe la souris sur une fonction dans Visual Studio et voir que les définitions de type contiennent 3 types différents que j'avais la pensée était la même. Sont-ils les mêmes? Ou sont-ils différents?Est-ce que float array, float [] et double [] sont différents ou identiques?
Répondre
Ils sont les mêmes. Voir les abréviations de type au bas de la documentation FSharp.Core. Et array<'T> = 'T[]
. Vous pouvez également définir vos propres abréviations de type et de les utiliser de la même façon:
type dbl = double
let (d:dbl) = 1.0
Vous ne demandez pas à ce sujet, mais notez que le seul endroit où les abréviations de type ne fonctionnent pas tout à fait comme vous attendez est la mesure les types; float<_>
est défini indépendamment de float
, double
, et System.Double
, et il n'y a pas de double<_>
correspondant ou System.Double<_>
.
ok, merci kvb ... –
En plus de saisir les abréviations, il y a deux choses utiles à savoir sur F types de #. Tout d'abord, il existe deux façons d'écrire des noms de types génériques. Une façon est d'utiliser la syntaxe OCaml et la seconde est d'utiliser la syntaxe .NET:
- Lorsque vous utilisez la syntaxe .NET, vous écrivez
array<'T>
ou par exempleOtherType<'T1, 'T2>
(pour les types avec plus d'un paramètre de type générique) . - Dans la syntaxe OCaml, la même chose est écrit
'T array
ou('T1, 'T2) OtherType
Ces deux notations sont équivalentes - lorsque vous déclarez une valeur de type annotée en utilisant la syntaxe .NET, vous pouvez l'affecter à une valeur annoté en utilisant la syntaxe OCaml. 'T[]
est une notation spéciale pour les tableaux, mais cela explique pourquoi array<'T>
est le même que 'T array
. La deuxième chose est que F # utilise une dénomination un peu malheureuse pour les types de nombres à virgule flottante. Ceci est probablement dû à la compatibilité avec OCaml, mais il peut facilement confondre les programmeurs .NET:
- F # flotteur de type correspond à
System.Double
dans .NET (qui est appelédouble
en C#) - F # float32 correspond bien à
System.Single
dans .NET (qui est appeléfloat
en C#)
Comme @kvb souligne, deux est une autre t ype alias pour le type System.Double
.
Bien sûr, il y a aussi l'abréviation 'single', qui est aussi synonyme de' float32' . Et 'int = int32 = System.Int32', et' int8 = sbyte = System.SByte', etc. – kvb
- 1. Stylecop - Détermine si Double ou Float
- 2. Java: double vs float
- 3. Conversion double [] [] en float [] []
- 4. Extrait float/valeur double
- 5. Java - int/long, float/double
- 6. Float et Double pour les valeurs monétaires
- 7. Double vs float sur l'iPhone
- 8. C# BitConverter.GetBytes (float/double) format?
- 9. son brut byteArray à float Array
- 10. float + float = NAN
- 11. regex int ou float
- 12. Java Reflection - Multidimensional Float Array Class
- 13. Types de données Octave - float & double
- 14. Comment afficher la représentation binaire d'un float ou d'un double?
- 15. C-structs, NSObjects, float, int, double,
- 16. Comment utiliser le module pour float/double?
- 17. Hibernate: Trouvé: float, attendu: double précision
- 18. PHPExcel: notation scientifique de double/float
- 19. jQuery validation d'entrée pour double/float
- 20. CSS et la propriété float
- 21. jQuery SlideDown et Float issuse
- 22. Droite Float et conteneurs div
- 23. fantaisie css float + clearing
- 24. Float ou décimal pour les prix?
- 25. Quelle est la différence entre float et float? type de retour en C# propriété
- 26. Qu'est-ce que float ('123.987') dans Python?
- 27. fonction efficace pour convertir float/double pour chaîne
- 28. Float/double précision dans les modes débogage/déverrouillage
- 29. MySQL Math - quoi de plus rapide, INTEGER ou FLOAT?
- 30. IE8 Effacer problème float
http://msdn.microsoft.com/fr-fr/library/dd233193.aspx –