Partilhar via


Valores

Os valores em F# são quantidades que têm um tipo específico; Os valores podem ser números integrais ou de ponto flutuante, caracteres ou texto, listas, sequências, matrizes, tuplas, uniões discriminadas, registros, tipos de classe ou valores de função.

Vinculando um valor

O termo vinculação significa associar um nome a uma definição. A let palavra-chave vincula um valor, como nos exemplos a seguir:

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

O tipo de um valor é inferido a partir da definição. Para um tipo primitivo, como um número integral ou de ponto flutuante, o tipo é determinado a partir do tipo do literal. Portanto, no exemplo anterior, o compilador infere o tipo de b ser unsigned int, enquanto o compilador infere o tipo de a ser int. O tipo de um valor de função é determinado a partir do valor de retorno no corpo da função. Para obter mais informações sobre tipos de valor de função, consulte Funções. Para obter mais informações sobre tipos literais, consulte Literais.

O compilador não emite diagnósticos sobre ligações não utilizadas por padrão. Para receber essas mensagens, habilite o aviso 1182 em seu arquivo de projeto ou ao invocar o compilador (consulte --warnon em Opções do compilador).

Porquê Imutável?

Valores imutáveis são valores que não podem ser alterados ao longo da execução de um programa. Se você está acostumado com linguagens como C++, Visual Basic ou C#, pode achar surpreendente que o F# coloque primazia sobre valores imutáveis em vez de variáveis que podem ser atribuídas a novos valores durante a execução de um programa. Os dados imutáveis são um elemento importante da programação funcional. Em um ambiente multithreaded, variáveis mutáveis compartilhadas que podem ser alteradas por muitos threads diferentes são difíceis de gerenciar. Além disso, com variáveis mutáveis, às vezes pode ser difícil dizer se uma variável pode ser alterada quando é passada para outra função.

Em linguagens funcionais puras, não há variáveis, e as funções se comportam estritamente como funções matemáticas. Quando o código em uma linguagem processual usa uma atribuição variável para alterar um valor, o código equivalente em uma linguagem funcional tem um valor imutável que é a entrada, uma função imutável e diferentes valores imutáveis como a saída. Este rigor matemático permite um raciocínio mais apertado sobre o comportamento do programa. Esse raciocínio mais rígido é o que permite que os compiladores verifiquem o código de forma mais rigorosa e otimizem de forma mais eficaz, e ajuda a tornar mais fácil para os desenvolvedores entenderem e escreverem o código correto. Portanto, é provável que o código funcional seja mais fácil de depurar do que o código processual comum.

F# não é uma linguagem funcional pura, mas suporta totalmente a programação funcional. Usar valores imutáveis é uma boa prática porque isso permite que seu código se beneficie de um aspeto importante da programação funcional.

Variáveis mutáveis

Você pode usar a palavra-chave mutable para especificar uma variável que pode ser alterada. As variáveis mutáveis em F# geralmente devem ter um escopo limitado, seja como um campo de um tipo ou como um valor local. Variáveis mutáveis com um escopo limitado são mais fáceis de controlar e são menos propensas a serem modificadas de maneiras incorretas.

Você pode atribuir um valor inicial a uma variável mutável usando a let palavra-chave da mesma forma que definiria um valor. No entanto, a diferença é que você pode atribuir novos valores a variáveis mutáveis usando o <- operador , como no exemplo a seguir.

let mutable x = 1
x <- x + 1

Os valores marcados mutable podem ser promovidos automaticamente se 'a ref capturados por um fechamento, incluindo formulários que criam fechamentos, como seq construtores. Se você deseja ser notificado quando isso ocorrer, ative o aviso 3180 em seu arquivo de projeto ou ao invocar o compilador.

Título Descrição
deixar Ligações Fornece informações sobre como usar a let palavra-chave para vincular nomes a valores e funções.
Funções Fornece uma visão geral das funções em F#.

Ver também