• Publicidad

No funcionan los decrementos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

No funcionan los decrementos

Notapor Kimbosirk » 2012-04-23 05:01 @251

Sí funcionan con los números, pero no con letras. Por ejemplo, si pongo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print --($foo = 'BA');
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Entiendo que debería aparecer en pantalla "AZ", pero en vez de eso me muestra "-1". Extrañamente, sí funciona bien el incremento.
Kimbosirk
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-04-23 04:44 @239

Publicidad

Re: No funcionan los decrementos

Notapor explorer » 2012-04-23 11:29 @520

Bienvenido a los foros de Perl en Español, Kimbosirk.

El "incremento mágico" solo funciona con pre y post incremento, no decremento:

Sacado de perlop:
El operador de auto decremento no es mágico.

Más información en tu propio ordenador en perldoc perlop, y en la Web (traducido). Busca por la sección Auto incremento y auto decremento (Auto-increment and Auto-decrement en inglés).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: No funcionan los decrementos

Notapor Kimbosirk » 2012-04-23 15:56 @706

Muchas gracias, explorer. Pasa que lo he visto en algunos tutoriales como si tuviera que funcionar, y a mí solo me salía -1 pusiera la letra que pusiera.

Edito: Me refería a ese tutorial en concreto. Dice:
The auto-decrement (--), and auto-increment (++) operators are unary operators. They alter the scalar variable they operate on by one logical unit. On numbers, they add or subtract one. On letters they shift one up or one down in the alphabet. On strings they do the same respective operation, but with the added ability to roll-over. Operators that come in post- and pre- varieties can be used two ways. The first way returns the value of the variable before it was altered, and the second way returns the value of the variable after it was altered.

Y pone como ejemplo:
Código: Seleccionar todo
my $foo = 'd';
 
# pre-decrement (decremented to c then printed)
print --$foo;  # prints c
print $foo;    # prints c

No entiendo para qué lo ponen si no funciona... :?
Última edición por Kimbosirk el 2012-04-23 16:07 @713, editado 1 vez en total
Kimbosirk
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-04-23 04:44 @239

Re: No funcionan los decrementos

Notapor explorer » 2012-04-23 15:59 @707

Claro, sale -1 porque hace el traspaso de cadena de caracteres a número (que será casi siempre un 0) y luego le resta una unidad.

Sería interesante saber qué manuales son esos, para avisar a sus autores.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: No funcionan los decrementos

Notapor Kimbosirk » 2012-04-23 16:09 @715

explorer escribiste:Claro, sale -1 porque hace el traspaso de cadena de caracteres a número (que será casi siempre un 0) y luego le resta una unidad.

Sería interesante saber qué manuales son esos, para avisar a sus autores.

Perdona que nos hemos cruzado, ya he editado el anterior.
Kimbosirk
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2012-04-23 04:44 @239

Re: No funcionan los decrementos

Notapor explorer » 2012-04-23 17:30 @770

Kimbosirk escribiste:No entiendo para qué lo ponen si no funciona... :?

Se les habrá ido la mano... No recuerdo ninguna versión de Perl en que funcionara eso... Y el caso es que en alguna ocasión podría ser útil.

Nada, nada... pulsado el botón de editar, y cambiado. :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron