¿Cómo puedo usar una declaración switch al pasar un argumento a una función? (Dart)
En Dart, se pueden utilizar las instrucciones de cambio (switch) en lugar de un largo if-then-else.
var command = 'OPEN';
switch (command) {
case 'CLOSED':
executeClosed();
break;
case 'OPEN':
executeOpen();
break;
default:
executeUnknown();
}
Pero a veces solo queremos proporcionar un valor basado en una condición. Por ejemplo, dentro de una llamada a una función, instanciación de una clase o establecimiento del valor de una variable, etc.
Por ejemplo:
// No funciona, pero desearía que sí
MakeNametag(
adjustFontSize: switch(status) {
case 'young': return 'large';
case 'old': return 'largest';
default: return 'normal';
} // fin switch
);
Si solo tienes dos opciones, se puede utilizar el operador condicional (a veces llamado operador ternario).
// Funciona
MakeNametag(
adjustFontSize: ['old','young'].contains(status) ? 'larger' : 'normal');
(Javascript tiene el mismo operador y problema)
davy.ai
Dart – Sentencias Switch vs Operadores Ternarios
En Dart, las sentencias switch se pueden utilizar para simplificar la comprobación condicional en lugar de utilizar largas declaraciones
if-then-else
. Sin embargo, a veces solo queremos proporcionar un valor basado en una condición, como dentro de una llamada de función, la instanciación de una clase o establecer el valor de una variable.Un ejemplo de esto es:
Si solo hay dos opciones, se puede utilizar un operador condicional, también conocido como operador ternario.
Ten en cuenta que JavaScript tiene el mismo operador y problema.