Saltar al contenido

Un operador ternario triple anidado algo doloroso

Solución:

Para mi gusto personal, un ternario anidado cuidadosamente alineado supera al lío if-esle:

const H =
  C == 0 ? null            :
  V == r ? (g - b) / C     :
  V == g ? (b - r) / C + 2 :
           (r - g) / C + 4 ;

Creo que puedes tener esto para evitar la anidación profunda:

var H

if(C == 0){
    H = null;
}
else if(V == r){
    H = (g - b) / C;
}
else if (V == g){
    H = (b - r) / C + 2;
}
else {
    H = (r - g) / C + 4;
}

Si su base de código JavaScript contiene declaraciones ternarias anidadas como la en cuestión, considere convertir el formato a declaraciones ternarias encadenadas en su lugar.

H = (C == 0)           // Is C zero?
    ? null             // Then return `null`, else ...
    : (V == r)         // Is V equal to r?
    ? (g - b) / C      // Then return this value, else ...
    : (V == g)         // Is V equal to g?
    ? (b - r) / C + 2  // Then return this value
    : (r - g) / C + 4; // Otherwise fall back to this default value

Simplemente leen de arriba a abajo en línea recta, devolviendo un valor tan pronto como alcanzan una condición de verdad o el retroceso.

Los ternarios anidados son geniales, Eric Elliot

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *