2
respostas

Var igual Dynamic?

Olá,

Fiz um teste utilizando este código:

void main (){
  var meuNumero;
  print(meuNumero.runtimeType);
  meuNumero = 7.1;
  print(meuNumero.runtimeType);
  meuNumero = "Alvaro";
  print(meuNumero.runtimeType);
  meuNumero = true;
  print(meuNumero.runtimeType);
}

E percebi que, se não inicializar o tipo var, ele se comporta igual dynamic, é isso mesmo?

Att, Alvaro

2 respostas

Olá, Alvaro!

A diferença entre var e dynamic é que o var define o tipo da variável com base no valor que ela recebe na inicialização, enquanto o dynamic permite que a variável mude de tipo durante a execução do programa.

No seu código de exemplo, você declarou a variável meuNumero como var e a inicializou com o valor 7.1. Nesse caso, o Dart inferiu que o tipo da variável é double. Por isso, ao imprimir meuNumero.runtimeType, você obteve o valor double.

Se você tivesse declarado a variável como dynamic, como no exemplo a seguir:

dynamic meuNumero;
print(meuNumero.runtimeType);
meuNumero = 7.1;
print(meuNumero.runtimeType);
meuNumero = "Alvaro";
print(meuNumero.runtimeType);
meuNumero = true;
print(meuNumero.runtimeType);

Você teria obtido a mesma saída, pois o dynamic permite que a variável mude de tipo. No entanto, é importante ressaltar que o uso excessivo de dynamic pode tornar seu código mais difícil de entender e pode levar a erros em tempo de execução.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!

Olá Renan,

No código eu não inicializei a variável na declaração, mas veja que, se executar o código da forma como ele está, é possível inicializar o meuNumero com outros tipos, double, string e boolean.

Att, Alvaro