Perl en Español

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

sentencia if

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Lun Abr 10, 2006 10:31 am
dacons
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Feb 2006
Mensajes: 48
sentencia if Responder citando

hola, tengo una duda, cuando una función se ejecuta devuelve verdadero, pero ¿qué devolvería este codigo?
Código:
if ($edad=0)
{
print “ Verdadero o falso”;
}
¿y que es lo que haría?
Mensaje Lun Abr 10, 2006 11:30 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
Responder citando

No devuelve nada.
Lo que estás haciendo es guardando el valor 0 en la variable $edad.
Deberías haber escrito
Código:
if ($edad == 0) {
  print “ Verdadero o falso”;
}
Es un fallo muy común. Todos hemos caído en él.
Una forma poco ortodoxa para evitarlo es escribiendolo al revés y daría un error de sintaxis:
Código:
perl -le 'if(0=$edad){print"Verdadero"}'
Can't modify constant item in scalar assignment at -e line 1, near "$edad)"
Execution of -e aborted due to compilation errors.


Ultima edición por explorer el Lun Abr 10, 2006 1:00 pm, editado 2 veces
Mensaje Lun Abr 10, 2006 12:42 pm
dacons
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Feb 2006
Mensajes: 48
Responder citando

Lo que tu me dices es lo que le he respondido yo a mi profesor pero me ha dicho que no es eso, he leido en algún sitio que perl considera como verdadero todo valor no nulo,
¿En este caso, sería nulo al asignarle el valor en la condición?
Mensaje Lun Abr 10, 2006 12:54 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
Responder citando

Naturalmente, se pueden poner asignaciones dentro de una condición if.
Perl ejecuta la expresión y luego la evalúa. Si es 0 o nula, no es verdadera y continúa con lo que hay después de la sentencia if.
Si a una variable le asignamos el valor 0, el resultado de la expresión es el resultado de la última expresión, luego también es 0. Si if se encuentra con un 0, luego la condición es falsa y no se ejecuta.

Entra en qué es verdadero o falso en Perl y busca por Truth and Falsehood.

Quizás no me expliqué bien en mi anterior mensaje... en el código corregido
Código:
if ($edad == 0) {
  print “ Verdadero o falso”;
}
si $edad es 0, entonces sacará la frase. Pero en
Código:
if ($edad = 0) {
  print “ Verdadero o falso”;
}
da igual el valor que tenga $edad, nunca sacará nada.
Mensaje Lun Abr 10, 2006 1:04 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
Re: sentencia if Responder citando

dacons escribió:
hola, tengo una duda, cuando una función se ejecuta devuelve verdadero
No todas las funciones devuelven verdadero...
Código:
perl -le 'sub zero{0};if(zero==0){print"Falso!"}'
Very Happy
Mensaje Vie Abr 21, 2006 10:59 am
dacons
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Feb 2006
Mensajes: 48
Responder citando

Eso era, muchas gracias
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