Como implementar uma estrutura condicional com o operador switch na linguagem Dart?
sobes.tech IA
Resposta da IA
A bifurcação com o operador switch em Dart é feita da seguinte forma:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('A cor selecionada é vermelha.');
break; // Termina a execução do bloco switch
case 'blue':
print('A cor selecionada é azul.');
break;
case 'green':
print('A cor selecionada é verde.');
break;
default: // Executa se nenhum case corresponder
print('Cor desconhecida.');
}
}
switch compara o valor da variável (neste caso color) com as constantes indicadas após case. Quando há correspondência, o código associado a esse case é executado. A palavra-chave break é necessária para sair do bloco switch após executar o case correspondente. Se omitido, a execução continua no próximo case (chamado "fallthrough"), o que geralmente não é desejado. default é usado para tratar os casos em que nenhum case corresponde.
É importante lembrar que, em Dart, num switch, apenas os seguintes tipos de expressões podem ser usados em case:
int- Strings (
String) - Constantes em tempo de compilação (
const) ou variáveis finais (final) de tipos primitivos - Enumerados (
enum)
Também é possível usar correspondência por tipo com case (Type value):
void process(dynamic value) {
switch (value) {
case String s:
print('O valor é uma string: $s');
break;
case int i when i > 0: // Uso de guard com when
print('O valor é um inteiro positivo: $i');
break;
case List _: // Correspondência com o tipo List sem ligação a variável
print('O valor é uma lista');
break;
default:
print('O valor é de outro tipo');
}
}
void main() {
process('olá');
process(10);
process([1, 2, 3]);
process(3.14);
}
No Dart 3.0, foram introduzidas novas capacidades de pattern matching que expandem as expressões switch:
var number = 1;
var text = switch (number) {
1 => 'um',
2 => 'dois',
_ => 'outro' // Equivalente a default
};
print(text); // Vai imprimir: um
Aqui, switch é usado como uma expressão que devolve um valor. O operador _ funciona como um curinga, correspondendo a qualquer valor.