Usar variáveis para armazenar valores
Todos os programas geralmente consistem em muitas etapas em que o programa opera nos dados. Como parte da execução de todas essas etapas, é comum armazenar o resultado intermitente, os dados, em uma referência nomeada. Em seguida, você pode ler ou manipular os dados mais tarde. Referências nomeadas geralmente são conhecidas como variáveis.
Variáveis, associar um valor
As variáveis são referências nomeadas associadas a um valor, às quais você deseja continuar se referindo em seu código. Em F#, ele é considerado como associação de um valor. Portanto, o que você faz é atribuir ou associar um valor a uma referência nomeada, uma variável. Para associar um valor, use a let palavra-chave, um nome para sua referência e atribua um valor a ele, como no código abaixo:
let name = "Chris"
name é a referência nomeada e "Chris" seu valor associado.
Depois que um valor é atribuído a uma variável, ele não pode ser alterado, ele é imutável. O código a seguir não compilaria e produziria um erro dizendo algo como "erro FS0027: Esse valor não é mutável".
let name = "Chris"
name <- "Luis" // not allowed
Torná-lo mutável
Você pode alterar variáveis, mas precisa sinalizar que deseja torná-las mutáveis. Usando a palavra-chave mutable em sua definição de variável, você pode alterar um valor sem um erro de compilação, como no seguinte código:
let mutable name = "Chris"
name <- "Luis" // this statement is now allowed
Tipos de variável
Existe um intervalo de tipos diferentes em F#. Muitos dos tipos têm a ver com o armazenamento de números de tamanhos diferentes e com ou sem decimais. Outros tipos são associados à cadeia de caracteres de texto ou variáveis boolianas. Aqui está uma lista de tipos que você provavelmente encontrará ao começar a aprender F#.
| Tipo | Descrição |
|---|---|
| bool | valores possíveis são true ou false |
| int | Valores de -2.147.483.648 a 2.147.483.647. |
| cadeia | Texto do Unicode |
| float, double | Um tipo de ponto flutuante de 64 bits. |
O tipo é inferido
Ao declarar uma variável, você pode fazer isso com ou sem tipo. Se você não fornecer um tipo ao declarar uma variável, o compilador F# fará uma melhor suposição sobre qual tipo deve ser pelo valor que você atribui à variável. Considere as seguintes instruções:
let age = 65 // int
let PI = 3.14 // float
let name = "my name" // string
O compilador infere quais devem ser os tipos e está certo. Você também pode ser mais explícito sobre o que deseja que o tipo seja. Para atribuir dados, use a sintaxe variableName:<type>, como neste código:
let sum:float = 0.0
Imprimir na tela
Você geralmente deseja ser capaz de imprimir na tela. Pode ser por várias razões, como:
- Saída do aplicativo: o aplicativo está fazendo algum tipo de cálculo e você deseja ver a saída.
- Depuração: como parte da depuração do código, talvez seja necessário gerar o resultado em um determinado ponto para entender o que está acontecendo de errado.
Há outros motivos para querer gerar para a tela, mas os dois cenários anteriores são os mais comuns.
Então, como você imprimiria na tela? Em F#, há três funções diferentes que você pode usar. Eles são printf, printfne até mesmo Console.WriteLine. Então, qual é a diferença?
-
printf: imprime parastdoutembutido (sem caractere de nova linha). -
printfn: ele imprime parastdoutadicionar um caractere de nova linha. -
Console.WriteLine: essa função é doSystemnamespace e funciona em todos os idiomas do .NET.
Agora você sabe a diferença, mas qual deve ser usada? Bem, printf e printfn são considerados mais idiomas e preferenciais em F#.
Formatação
Como parte da impressão na tela, convém combinar texto e números. Ou talvez você queira que a saída seja formatada de uma determinada maneira, como usando:
Argumentos posicionais: para formatar, você pode usar uma função .NET como
String.Format, que usa argumentos posicionais comoString.Format("My name is {0} and I live in {1}", "Chris", "UK").Interpolação de cadeia de caracteres: outra maneira de combinar variáveis e texto é usar algo chamado interpolação. Para usá-la, você precisa preceder a cadeia de caracteres com um
$sinal e indicar espaços reservados com colchetes{}. Veja um exemplo de como usar a interpolação:let name = "Luis" let company = "Microsoft" printfn $"Name: {name}, Company: {company}"Você também pode adicionar expressões entre os colchetes, da seguinte maneira:
let firstNumber = 2000 let secondNumber = 21 printfn $"The year is: {firstNumber + secondNumber}"Observação
Não há verificação de tipo usando interpolação, portanto, pode parecer simples de usar. Certifique-se de combinar as coisas corretamente.
Especificadores: você também pode usar especificadores de formato como parte do que está tentando imprimir. Usar especificadores é a maneira mais usada de formatar em F#. Veja um exemplo:
let name = "Chris" printf "Hi %s" name // prints: Hi ChrisAqui você pode ver como o formatador
%sé usado para misturar a primeira cadeia de caracteres com a variávelname.Observação
Quando você usa formatadores como %s ou %i, o compilador verifica os tipos. Se o argumento posicional não for do tipo especificado, ele gerará um erro.
Especificadores de formato
Há muitos especificadores de formato. Aqui estão alguns que você provavelmente encontrará.
| Especificador | Descrição | Exemplo |
|---|---|---|
| %s | Usado para cadeias de caracteres e conteúdo sem escape | printf "Hello %s" name |
| %d, %i | Formatado como um inteiro decimal, assinado se o tipo inteiro básico estiver assinado | printf "Age: %i" 65 |
| %b | Booliano true ou false |
printf "Setting on: %b" true |
Há mais informações sobre formatação. Se você quiser saber sobre todas as funcionalidades, consulte a formatação no documento F#.