Lun Abr 10, 2006 10:31 am
|
 |
dacons
Perlero Nuevo

|
Registrado: 27 Feb 2006
Mensajes: 48
|
|
| sentencia if |
|
|
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? |
|
|
|
Lun Abr 10, 2006 11:30 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
|
|
|
|
|
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 |
|
Lun Abr 10, 2006 12:42 pm
|
 |
dacons
Perlero Nuevo

|
Registrado: 27 Feb 2006
Mensajes: 48
|
|
|
|
|
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? |
|

Lun Abr 10, 2006 12:54 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Lun Abr 10, 2006 1:04 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4124
Ubicación: Valladolid, España
|
|
| Re: sentencia if |
|
|
| 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!"}' |
 |
|
Vie Abr 21, 2006 10:59 am
|
 |
dacons
Perlero Nuevo

|
Registrado: 27 Feb 2006
Mensajes: 48
|
|
|
|
|
| Eso era, muchas gracias |
|
Powered by phpBB © 2001, 2005 phpBB Group
|