Escribo mi código como si todo fuera lo mismo y no tuviera problemas, pero está empezando a confundirme cuando controlo una función en Visual Studio y veo que las definiciones de tipo contienen 3 tipos diferentes que tenía. el pensamiento era todo lo mismo. ¿Son lo mismo? ¿O son diferentes?¿Son flotantes, flotantes [] y dobles [] diferentes, o lo mismo?
Respuesta
Son lo mismo. Consulte las abreviaturas de tipo en la parte inferior de la documentación FSharp.Core. float = double = System.Double
y array<'T> = 'T[]
. También puede definir sus propias abreviaturas tipo y utilizar de la misma manera:
type dbl = double
let (d:dbl) = 1.0
usted no pidió al respecto, pero tenga en cuenta que el único lugar en el tipo abreviaturas podrían no funcionar bien como cabría esperar es medida tipos; float<_>
se define independientemente de float
, double
y System.Double
, y no existe la correspondiente double<_>
o System.Double<_>
.
ok, gracias kvb ... –
Además de escribir abreviaturas, hay dos cosas útiles que debe saber sobre los tipos de F #. En primer lugar, hay dos formas de escribir nombres de tipos genéricos. Una forma es utilizar la sintaxis OCaml y la segunda forma es utilizar la sintaxis .NET:
- Al utilizar la sintaxis de .NET, se escribe
array<'T>
o, por ejemploOtherType<'T1, 'T2>
(para los tipos con más de un parámetro de tipo genérico) . - En la sintaxis OCaml, lo mismo se escribe como
'T array
o('T1, 'T2) OtherType
Estos dos notaciones son equivalentes - cuando se declara un valor de tipo anotada usando la sintaxis NET, puede asignarlo a un valor anotado usando la sintaxis OCaml. 'T[]
es una nota especial para las matrices, pero esto explica por qué array<'T>
es lo mismo que 'T array
.
Lo segundo es que F # usa un nombre un poco desafortunado para los tipos de números de coma flotante. Esto es probablemente debido a la compatibilidad con OCaml, pero puede confundir fácilmente programadores .NET:
- F # flotador tipo corresponde a
System.Double
en .NET (que se llamadouble
en C#) - F # float32 tipo corresponde a
System.Single
en .NET (que se llamafloat
en C#)
Como @kvb señala, doble es otra t ype alias para el tipo System.Double
.
Por supuesto, también está la abreviatura 'single', que también es sinónimo de' float32' . Y 'int = int32 = System.Int32', y' int8 = sbyte = System.SByte', etc. – kvb
- 1. dobles/flotantes atómicos en Intel TBB
- 2. llaves flotantes flotantes en C#
- 3. ¿Cómo insertar valores dobles y flotantes en sqlite?
- 4. Comparación de flotantes IEEE y dobles para igualdad
- 5. División y puntos flotantes
- 6. flotantes y enteros ....?
- 7. Declarando números enteros, dobles, flotantes, cadenas, etc. en Spring XML
- 8. NHibernate: utilizando dobles C# con SQL Server como "flotantes"
- 9. espacios vacíos flotantes CSS
- 10. Números flotantes en Java
- 11. Alinear verticalmente divs flotantes
- 12. PHP - serializar puntos flotantes
- 13. galería de miniaturas flotantes, diferentes tamaños, cómo manejarlo?
- 14. Gráficos de barras flotantes
- 15. Redondeo de valores flotantes
- 16. ¿Cómo centrar divs flotantes?
- 17. Parches flotantes de pitón
- 18. caja-sombra sobre div flotantes
- 19. ¿Puede una matriz contener enteros y flotantes?
- 20. Divisiones de montaje y puntos flotantes
- 21. Índice dict de python por objeto o dos flotantes
- 22. ¿Tuple2 y Pair son lo mismo o no?
- 23. xmonad: mover ventanas flotantes nuevas
- 24. ¿Cómo implementar licencias flotantes en ASP.NET?
- 25. ¿Por qué no hay operación de resto de división para flotantes/dobles en C y C++?
- 26. ¿Por qué comparar conductores dobles y flotantes para obtener resultados inesperados?
- 27. Javascript: comparar dos valores flotantes
- 28. ¿Sujeta números flotantes en Python?
- 29. divs flotantes de indexación z
- 30. ¿Son eval() y new Function() lo mismo?
http://msdn.microsoft.com/en-us/library/dd233193.aspx –