Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvidas Sobre NULL

Boa tarde!

Estava lendo o seguinte codigo do artigo recomendado no curso:

class Cafe {
  String _temperatura; // criei a Temperatura

  void esquentar() { _temperatura = 'quente'; } // Defino a Temperatura para quente

  void esfriar() { _temperatura = 'gelado'; }

  String servir() => _temperatura + ' cafe'; // Servir o Cafe com a Temperatura 
}

main() {
  var cafe = Cafe(); // Fazer o Cafe
  cafe.esquentar(); // Esquentar o Cafe
  cafe.servir(); // Servir o Cafe sem esperar que ele já esteja quente
}

Quando a variavel Temperatura é criada, ela esta do tipo NULL, porem depois é colocado um valor nela.

Uma variavel do tipo NULL pode ou não pode ter seu tipo mudado depois?

3 respostas

Oi Vinicius, tudo bem?

Em Dart, quando você cria uma variável e não atribui um valor a ela, por padrão, essa variável é inicializada como null. No entanto, isso não significa que o tipo da variável é null. Na verdade, null é apenas um valor especial que indica que a variável não tem um valor atribuído no momento.

No seu exemplo, a variável _temperatura é do tipo String. Quando você a cria, ela é inicialmente null porque você não atribuiu um valor a ela. No entanto, você pode atribuir um valor a ela mais tarde, como você fez com cafe.esquentar(); e cafe.esfriar();. Isso não muda o tipo da variável _temperatura, ela ainda é uma String. O que muda é apenas o valor que ela armazena.

Então, para responder sua pergunta diretamente: uma variável que é inicialmente null pode ter um valor atribuído a ela mais tarde, e isso não muda o tipo da variável.

Espero ter ajudado.

Um abraço e bons estudos.

Entendi, porem ainda me sobrou uma dúvida.

No exemplo acima, este código iria apresentar erro pois diz que a variável temperatura não pode ser null, mesmo eu atribuindo um valor à ela antes do cafe.servir().

Porque acontece este comportamento?

solução!

Olá Vinicius,

O comportamento que você mencionou pode estar relacionado a um detalhe específico do código.

main() {
  var cafe = Cafe(); // Fazer o Cafe
  cafe.esquentar(); // Esquentar o Cafe
  cafe.servir(); // Servir o Cafe sem esperar que ele já esteja quente
}

No seu exemplo, a função servir() retorna _temperatura + ' cafe';, onde _temperatura é uma String. Se você chamar cafe.servir(); antes de chamar cafe.esquentar(); ou cafe.esfriar();, _temperatura ainda será null, e tentar concatenar null com ' cafe' pode causar um erro.

Espero que isso ajude a esclarecer a situação.

Abraço.