Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Operador and

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Lun Abr 24, 2006 4:52 am
dacons
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Feb 2006
Mensajes: 48
Operador and Responder citando

Hola a todos, mi duda es ¿qué otra función hace el operador and?. Sé lo que hace en una condición, pero por ejemplo en este código:
Código:
$a = 'manzanas';
$b = 'peras';
print $a and $b ;
¿Porqué imprime manzanas? ¿qué es lo que hace?
Mensaje Lun Abr 24, 2006 5:27 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Es muy curioso lo que pasa.

Resulta que los operadores lógicos devuelven el último valor o expresión evaluada que confirme toda la expresión lógica.

En caso de un 'and', todas las expresiones deben ser ciertas para devolver un valor de cierto, y en ese caso, devuelve el último valor de la última expresión evaluada (la que está más a la derecha).

En el caso planteado, deberían ser las 'peras' las que deberían de aparecer en pantalla, pero lo que salen son las 'manzanas'.

¿Dónde está el fallo?

Pues resulta que
Código:
print $a and $b;
es lo mismo que si hubieras escrito
Código:
(print $a) and $b;
Es decir, imprimes 'manzanas' porque es la primera expresión a evaluar; como es una expresión cierta (imprimimos un valor), luego evalua 'peras'. Pero el resultado del and se pierde.

Cosa distinta es escribir entonces
Código:
print ($a and $b);
que, por fin y de esta manera, salen nuestras queridas 'peras'...

Y cosa distinta sería si quisiéramos imprimir $a sólo en el caso de que $b fuera cierta:
Código:
print $a if $b;
Mensaje Lun Abr 24, 2006 6:07 am
dacons
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Feb 2006
Mensajes: 48
Responder citando

Muchas gracias de nuevo
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group