Usar variáveis para armazenar valores

Concluído(a)

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

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 para stdout embutido (sem caractere de nova linha).
  • printfn: ele imprime para stdout adicionar um caractere de nova linha.
  • Console.WriteLine: essa função é do System namespace 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 como String.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 Chris
    

    Aqui você pode ver como o formatador %s é usado para misturar a primeira cadeia de caracteres com a variável name.

    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#.