Em linguagens de programação, um objeto imutável é aquele cujo status não pode ser modificado no decorrer do programa após sua definição, sendo que F# é uma linguagem com suporte a dados imutáveis e mutáveis. Indique a opção que apresente uma declaração, respectivamente, de um dado mutável e um dado não mutável em F#.
Questão
Em linguagens de programação, um objeto imutável é aquele cujo status não pode ser modificado no decorrer do programa após sua definição, sendo que F# é uma linguagem com suporte a dados imutáveis e mutáveis.
Indique a opção que apresente uma declaração, respectivamente, de um dado mutável e um dado não mutável em F#.
Alternativas
a) "let mutable x = 10" e "let x = x + 2"
b) "let mutable x = 10" e "let immutable x = x + 2"
c) "int x = 10" e "const int x = 12"
d) "let x = x + 2" e "let mutable x = 10"
e) "mutable x = 10" e "x = x + 2"
Explicação
Em F#, por padrão, valores declarados com let são imutáveis (não podem ter seu valor reatribuído). Para permitir mudança (reatribuição), é necessário usar a palavra-chave mutable.
- Dado mutável:
let mutable x = 10declaraxcomo variável mutável, permitindo posterior atualização (por exemplo,x <- 12). - Dado não mutável (imutável): uma declaração com
let x = ...(semmutable) define um valor imutável.
Analisando as alternativas:
- (a) traz primeiro uma declaração mutável (
let mutable x = 10) e depois uma declaração comletsemmutable, que é imutável (apesar do exemplo estar semanticamente estranho por usarxno lado direito, a ideia de imutabilidade doletestá correta). - (b)
immutablenão existe como palavra-chave em F#. - (c) é sintaxe de C/C++, não de F#.
- (d) está na ordem invertida (imutável depois mutável).
- (e) não usa a sintaxe correta de declaração em F#.
Alternativa correta: (a).