Menu
Coddy logo textTech

Enums em instruções 'switch'

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy. Lição 61 de 65.

Uma das aplicações mais poderosas de enums é usá-los com instruções switch. Ao combinar enums com instruções switch, você cria um código que é ao mesmo tempo mais seguro e mais fácil de manter.

Veja como você pode usar um enum em uma instrução switch:

enum Status {
  pending,
  running,
  completed
}

Status currentStatus = Status.pending;

switch (currentStatus) {
  case Status.pending:
    print('Task is waiting to start');
    break;
  case Status.running:
    print('Task is currently in progress');
    break;
  case Status.completed:
    print('Task has been finished');
    break;
}

A vantagem de usar enums com instruções switch é que o Dart pode verificar se você tratou todos os valores possíveis do enum. Se você esquecer de incluir um case para um dos valores do enum, o Dart avisará, ajudando a evitar bugs no seu código.

Esta abordagem é muito mais segura do que usar strings ou números em instruções switch, onde erros de digitação podem causar comportamentos inesperados. Com enums, você obtém verificação em tempo de compilação que garante que seu código trate todos os cenários possíveis.

challenge icon

Desafio

Fácil

Crie um programa que gerencie o estado de um personagem de jogo usando enums e instruções switch. Sua tarefa é:

  1. Defina um enum chamado CharacterState com os seguintes valores: idle, walking, running, jumping e attacking
  2. Crie uma variável chamada currentState do tipo CharacterState e atribua a ela o valor CharacterState.idle
  3. Crie uma função chamada getStateMessage que receba um parâmetro CharacterState e retorne uma mensagem de texto com base no estado usando uma instrução switch:
    • Para CharacterState.idle: retorne "Character is standing still"
    • Para CharacterState.walking: retorne "Character is moving slowly"
    • Para CharacterState.running: retorne "Character is moving quickly"
    • Para CharacterState.jumping: retorne "Character is in the air"
    • Para CharacterState.attacking: retorne "Character is fighting"
  4. Imprima a mensagem do estado inicial usando a função com o formato exato: Initial state: Character is standing still
  5. Altere o currentState para CharacterState.walking
  6. Imprima a mensagem do estado atualizado com o formato exato: Updated state: Character is moving slowly
  7. Altere o currentState para CharacterState.attacking
  8. Imprima a mensagem do estado final com o formato exato: Final state: Character is fighting

Seu programa deve demonstrar o uso adequado de enums com instruções switch, mostrando como essa combinação proporciona um gerenciamento de estado com segurança de tipos. A instrução switch deve lidar com todos os valores do enum e retornar a mensagem apropriada para cada estado do personagem. Certifique-se de seguir as convenções de nomenclatura do Dart e usar exatamente as mensagens de texto especificadas acima.

Experimente você mesmo

import 'dart:io';

// TODO: Defina seu enum CharacterState aqui

// TODO: Crie sua função getStateMessage aqui

void main() {
  // TODO: Escreva seu código abaixo
  
  // Crie a variável currentState e atribua a ela CharacterState.idle
  
  // Imprima a mensagem de estado inicial
  
  // Altere currentState para CharacterState.walking
  
  // Imprima a mensagem de estado atualizada
  
  // Altere currentState para CharacterState.attacking
  
  // Imprima a mensagem de estado final
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de Dart online