DEV Community

Cover image for Diferenças entre final e const no Dart
Henrique Pomatti dos Santos
Henrique Pomatti dos Santos

Posted on

Diferenças entre final e const no Dart

Na maioria das linguagens, estamos lidando com valores finais e constantes, como os próprios nomes já sugerem.

Agora, tanto final quanto const parecem que estamos criando valores que não podem mudar, certo?

Um valor constante é provavelmente o oposto de uma variável, é uma variável que não muda, portanto, é bastante constante no valor que está armazenado nele!

Mas um valor final também é um valor que não muda.

Então, bora verificar a diferença?

var user = [
{'name ': 'Henrique', 'age': 20},
{'name ': 'José', 'age': 22},
{'name ': 'Vargas', 'age': 27},
];
Enter fullscreen mode Exit fullscreen mode

Podemos usar final em vez de var aqui e, na verdade, seria melhor do que usar var porque agora estamos muito cientes sobre o fato de que nunca pretendemos alterar esses valores uma vez que nosso programa seja executado!

E aqui está a grande jogada!!!

Use final se um valor não mudar desde o momento em que seu programa é executado. Ele pode ser inicializado com um valor, embora, por exemplo, em nossos códigos Dart, as propriedades aqui são finais porque elas são alteradas inicialmente quando atribuímos um valor aqui quando ele é criado, mas não mudam depois disso. exatamente o que final significa!

class User {
final String userName;
final int16 age;
User(this.age, this.userName);
}
Enter fullscreen mode Exit fullscreen mode

É um valor constante de tempo de execução. No momento em que este código é executado, nós registramos os valores finais, mas no momento em que estamos escrevendo este código, não sabemos qual será o valor final.

Então const para quê?

const user = [
{'name ': 'Henrique', 'age': 20},
{'name ': 'José', 'age': 22},
{'name ': 'Vargas', 'age': 27},
];
Enter fullscreen mode Exit fullscreen mode

Deveríamos usar const para deixar bem claro que esta é uma constante de tempo de compilação, não uma constante de tempo de execução como final é, mas uma constante de tempo de compilação.

Agora, constante de tempo de compilação também significa implicitamente constante de tempo de execução.

Se você souber no momento em que está escrevendo o código qual será o valor final e que esse valor nunca mudará, então, é claro, ele também nunca mudará durante o tempo de execução.

Mas o valor, o valor final, não é registrado quando o código é executado, mas já depois que você escreveu o código, porque o valor nunca será alterado.

E esse é um conceito importante e, esperançosamente, deixa claro por que você veja o final e o const e como eles diferem.

Top comments (0)