Literales
En este artículo se proporciona una tabla que muestra cómo especificar el tipo de un literal en F#.
Tipos literales
En la tabla siguiente se muestran los tipos literales en F#. Los caracteres que representan dígitos en notación hexadecimal no distinguen mayúsculas de minúsculas; Los caracteres que identifican el tipo distinguen mayúsculas de minúsculas.
| Tipo | Descripción | Sufijo o prefijo | Ejemplos |
|---|---|---|---|
| sbyte | entero de 8 bits con signo | s | 86y0b00000101y |
| byte | número natural de 8 bits sin signo | uy | 86uy0b00000101uy |
| int16 | entero de 16 bits con signo | s | 86s |
| uint16 | número natural de 16 bits sin signo | americana | 86us |
| int int32 |
entero de 32 bits con signo | l o ninguno | 8686l |
| uint uint32 |
número natural de 32 bits sin signo | u o ul | 86u86ul |
| nativeint | puntero nativo a un número natural con firma | n | 123n |
| unativeint | puntero nativo como un número natural sin signo | Onu | 0x00002D3Fun |
| int64 | entero de 64 bits con signo | L | 86L |
| uint64 | número natural de 64 bits sin signo | UL | 86UL |
| single, float32 | Número de punto flotante de 32 bits | F o f | 4.14F o 4.14f |
| Si | 0x00000000lf |
||
| float; Doble | Número de punto flotante de 64 bits | ninguno | 4.14, 2.3E+32 o 2.3e+32 |
| SI | 0x0000000000000000LF |
||
| bigint | entero no limitado a representación de 64 bits | I | 9999999999999999999999999999I |
| Decimal | número fraccional representado como un punto fijo o número racionalizado | M o m | 0.7833M o 0.7833m |
| Char | carácter Unicode | ninguno | 'a' o '\u0061' |
| String | Cadena de Unicode | ninguno | "text\n"or @"c:\filename"or """<book title="Paradise Lost">"""or "string1" + "string2"Vea también Cadenas. |
| byte | Carácter ASCII | B | 'a'B |
| byte[] | Cadena ASCII | B | "text"B |
| Cadena o byte[] | cadena textual | @ prefix | @"\\server\share" (Unicode)@"\\server\share"B (ASCII) |
Literales con nombre
Los valores que están diseñados para ser constantes se pueden marcar con el atributo Literal. Este atributo tiene el efecto de hacer que un valor se compile como una constante.
En las expresiones de coincidencia de patrones, los identificadores que comienzan por caracteres en minúsculas siempre se tratan como variables que se van a enlazar, en lugar de como literales, por lo que normalmente debe usar mayúsculas iniciales al definir literales.
[<Literal>]
let SomeJson = """{"numbers":[1,2,3,4,5]}"""
[<Literal>]
let Literal1 = "a" + "b"
[<Literal>]
let FileLocation = __SOURCE_DIRECTORY__ + "/" + __SOURCE_FILE__
[<Literal>]
let Literal2 = 1 ||| 64
[<Literal>]
let Literal3 = System.IO.FileAccess.Read ||| System.IO.FileAccess.Write
Comentarios
Las cadenas Unicode pueden contener codificaciones explícitas que puede especificar mediante seguido de un código hexadecimal de 16 bits (0000 - FFFF) o codificaciones UTF-32 que puede especificar mediante seguido de un código hexadecimal de 32 bits que representa cualquier punto de código \u \U Unicode (00000000 - 0010FFFF).
No se permite el uso de otros operadores bit a bit ||| distintos de .
Enteros en otras bases
Los enteros de 32 bits con signo también se pueden especificar en hexadecimal, octal o binario mediante 0x un prefijo , o 0o 0b respectivamente.
let numbers = (0x9F, 0o77, 0b1010)
// Result: numbers : int * int * int = (159, 63, 10)
Caracteres de subrayado en literales numéricos
Puede separar dígitos con el carácter de subrayado ( _ ).
let value = 0xDEAD_BEEF
let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111
let exampleSSN = 123_456_7890