Literais
Este artigo fornece uma tabela que mostra como especificar o tipo de um literal em F#.
Tipos literais
A tabela a seguir mostra os tipos literais em F#. Caracteres que representam dígitos em notação hexadecimal não diferenciam maiúsculas de minúsculas e caracteres que identificam o tipo diferenciam maiúsculas de minúsculas.
Tipo | Descrição | Sufixo ou prefixo | Exemplos |
---|---|---|---|
sbyte | inteiro de 8 bits assinado | a | 86y 0b00000101y |
byte | número natural de 8 bits não assinado | uy | 86uy 0b00000101uy |
int16 | Inteiro de 16 bits assinado | s | 86s |
uint16 | número natural de 16 bits não assinado | us | 86us |
INT int32 |
Inteiro de 32 bits assinado | l ou nenhum | 86 86l |
uint uint32 |
número natural de 32 bits não assinado | u ou ul | 86u 86ul |
nativeint | ponteiro nativo para um número natural assinado | n | 123n |
unativeint | ponteiro nativo como um número natural não assinado | un | 0x00002D3Fun |
int64 | Inteiro de 64 bits assinado | L | 86L |
uint64 | número natural de 64 bits não assinado | UL | 86UL |
single, float32 | número de ponto flutuante de 32 bits | F ou f | 4.14F ou 4.14f |
Se | 0x00000000lf |
||
float; double | número de ponto flutuante de 64 bits | nenhum | 4.14 ou 2.3E+32 ou 2.3e+32 |
LF | 0x0000000000000000LF |
||
BIGINT | inteiro não limitado à representação de 64 bits | I | 9999999999999999999999999999I |
decimal | número fracionário representado como um ponto fixo ou número racional | M ou m | 0.7833M ou 0.7833m |
Char | Caractere unicode | nenhum | 'a' ou '\u0061' |
String | Cadeia de caracteres Unicode | nenhum | "text\n" ou @"c:\filename" ou """<book title="Paradise Lost">""" ou "string1" + "string2" Consulte também Cadeias de Caracteres. |
byte | Caractere ASCII | B | 'a'B |
byte[] | Cadeia de caracteres ASCII | B | "text"B |
Cadeia de caracteres ou byte[] | cadeia de caracteres verbatim | prefixo @ | @"\\server\share" (Unicode)@"\\server\share"B (ASCII) |
Literais nomeados
Valores destinados a serem constantes poderão ser marcados com o atributo Literal .
Este atributo compila um valor como uma constante. No exemplo a seguir, tanto x
quanto y
abaixo são valores imutáveis, mas x
é avaliado em tempo de execução, enquanto y
é uma constante de tempo de compilação.
let x = "a" + "b" // evaluated at run-time
[<Literal>]
let y = "a" + "b" // evaluated at compile-time
Por exemplo, essa distinção é importante ao chamar uma função externa, pois DllImport
é um atributo que precisa saber o valor de myDLL
durante a compilação. Sem a declaração [<Literal>]
, esse código falharia ao compilar:
[<Literal>]
let myDLL = "foo.dll"
[<DllImport(myDLL, CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()
Em expressões de correspondência de padrões, os identificadores que começam com caracteres minúsculos são sempre tratados como variáveis a serem vinculadas, em vez de literais, portanto, geralmente é necessário usar letras maiúsculas iniciais ao definir literais.
[<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
Comentários
Literais nomeados são úteis para:
- Correspondência de padrões sem uma cláusula
when
. - Argumentos de atributo.
- Argumentos de provedor de tipos estáticos.
As cadeias de caracteres Unicode podem conter codificações explícitas que podem ser especificadas usando \u
seguidas por um código hexadecimal de 16 bits (0000 − FFFF) ou codificações UTF-32 que podem ser especificadas usando \U
seguido por um código hexadecimal de 32 bits que representa qualquer ponto de código Unicode (00000000 − 0010FFFF).
O uso de operadores bit a bit diferente de |||
não é permitido.
Inteiros em outras bases
Inteiros de 32 bits assinados também podem ser especificados em hexadecimal, octal ou binário usando um prefixo 0x
, 0o
ou 0b
, respectivamente.
let numbers = (0x9F, 0o77, 0b1010)
// Result: numbers : int * int * int = (159, 63, 10)
Sublinhados em literais numéricos
É possível separar os dígitos com o caractere sublinhado (_
).
let value = 0xDEAD_BEEF
let valueAsBits = 0b1101_1110_1010_1101_1011_1110_1110_1111
let exampleSSN = 123_45_6789
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de