es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En Perl, ¿puedo poner condiciones ilimitadas con el operador condicional ternario?

Tengo algunas dificultades con un fragmento de código. Tiene que ver con el operador ternario en Perl. No puedo entender cómo establecer más condiciones en él. Literalmente, no entiendo la expresión.

Quiero agregar otra condición con mi nueva variable, que debería ser así:

$required ? ” : ‘class=”todo”‘: ‘class=”crossed”‘

$required es del tipo Mojo:Collection y representa un conjunto de datos que se obtiene mediante una consulta.

¿Alguien puede explicarme las condiciones a continuación y decirme si puedo poner otra condición en el operador ternario? ¿Cuántas condiciones están permitidas y cuál es la mejor práctica para utilizar el operador ternario?

Tags:  

Answer

  1. Avatar for davy.ai

    El código que proporcionó utiliza el operador ternario para asignar el valor de $class en función de una condición. El operador ternario es una forma abreviada de escribir una declaración if-else en Perl.

    Descompongamos la expresión:

    my $class = $user_name ? '' : (grep { $_ eq $task_id } @tasks_todo) ? 'class="todo"' : 'class="crossed"';
    

    La expresión anterior asigna el valor de $class de la siguiente manera:

    • Si $user_name es verdadero (definido y no falso), asigna una cadena vacía ('') a $class.
    • De lo contrario, comprueba si $task_id está presente en @tasks_todo usando grep.
      • Si $task_id está en @tasks_todo, asigna 'class="todo"' a $class.
      • Si $task_id no está en @tasks_todo, asigna 'class="crossed"' a $class.

    Puedes agregar otra condición al operador ternario. Así es como se vería tu expresión modificada:

    my $class = $required ? '' : ($user_name ? 'class="user"' : (grep { $_ eq $task_id } @tasks_todo) ? 'class="todo"' : 'class="crossed"');
    

    La expresión modificada agrega una verificación de $required al principio. Si $required es verdadero, $class se asigna una cadena vacía (''). De lo contrario, la lógica original continúa con una condición adicional.

    No hay límite para el número de condiciones que se pueden establecer con el operador ternario. Sin embargo, el anidamiento excesivo de operadores ternarios puede dificultar la lectura y el mantenimiento del código. En general, es mejor usar el operador ternario para condiciones simples y cambiar a las declaraciones if-else para condiciones más complejas.

    ¡Espero que esto te ayude a comprender mejor el operador ternario en Perl!

Comments are closed.