1
resposta

Uma observação sobre a função 'getComando()'

Até o momento dessa aula, estou fazendo o projeto 'notas' juntamente com o professor. Percebi que na função 'getComando()', do jeito que ela foi criada para tratar um erro do usuário com o uso da recursividade, está dando um problema que é o de que se eu errar o comando e ele voltar para eu acertar, quando eu acerto é como se ele tivesse carregando o valor anterior na variável, e quando ele vai para o switch-case da função 'menu', não tá entrando em nenhum dos cases. Então, eu mudei o tratamento de erro na função 'getComando()', pois ao invés de usar recursividade, eu usei um laço de repetição (do - while) e o programa só vai sair quando o usuário digitar uma das opções e o valor que sai da função vai ser o último digitado pelo usuário e deu certo assim. Ainda vou assistir os outros vídeos do professor e ver se ele comenta sobre isso. Vou colocar a minha função 'getCOmando()' com a alteração que fiz e eu comentei no código o trecho que tem o tratamento com a recursividade.

String getComando() {
  String? entrada;
  List<String> comandos = ['1', '2', '3'];

  do{
  print('Digite um comando: 1 - Adicionar nota, 2 - Listar notas, 3 - Sair');
  entrada = stdin.readLineSync();
  } while (entrada == null || !comandos.contains(entrada));
  /*
  if (entrada == null || !comandos.contains(entrada)) {
    print('Comando inválido');
    getComando();
  }*/

  return entrada;
}
1 resposta

Olá, Luís, como vai?

Muito boa a sua análise. Esse tipo de reflexão sobre o comportamento do código é muito importante no processo de aprendizagem. Quando usamos recursividade para validar entradas, é importante lembrar que o valor retornado pela chamada correta precisa ser corretamente propagado. Caso contrário, o valor final pode ser perdido, e isso impacta diretamente em estruturas como o switch-case.

Obrigado por compartilhar sua sugestão. É ótimo ver esse tipo de contribuição no fórum, porque ela ajuda a enriquecer o aprendizado coletivo. Sempre que tiver insights como esse, não deixe de trazer por aqui.

O fórum está à disposição para qualquer dúvida ou troca de ideias.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!