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 86y

0b00000101y
byte número natural de 8 bits sin signo uy 86uy

0b00000101uy
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 86

86l
uint

uint32
número natural de 32 bits sin signo u o ul 86u

86ul
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