L'opérateur -- en Perl

L'opérateur double moins utilisé dans Perl afin de réduire la valeur de la variable sur un.

Exemple:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Le programme affichera le nombre de 99.

Le formulaire d'enregistrement

Il existe deux formes d'écriture: vous pouvez spécifier un opérateur après la variable (postfix formulaire d'enregistrement) ou avant la variable (префиксная forme d'écriture):

$i--;
--$i;

Dans ce cas, si la commande se trouve sur une ligne, il n'y a aucune différence entre les notations préfixée et постфиксной forme d'écriture. La différence est que si l'opérateur -- dans le cadre d'un de l'équipe. Si -- se trouve devant une variable, la valeur de la variable d'augmenter avant de suivre le reste de l'équipe. Si -- se trouve après la variable, la valeur de la variable d'augmenter après l'exécution du reste de l'équipe.

Voici un exemple.

Voici le programme affiche le nombre de 100 et 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

Et voici le programme affiche le nombre de 99 deux fois:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- pour les lignes

De l'opérateur ++ a une magie quand il s'applique à une variable dans laquelle se trouve la chaîne.

L'opérateur de -- la magie n'est pas. La chaîne est convertie en nombre et de ce nombre est déduit à l'unité.

Voici un exemple. Le programme affiche le nombre de -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Voici quelques exemples de ce qui fera l'opérateur -- avec une chaîne dans une variable:

'a' -> -1
'100ABC' -> 99
'0100ABC' -> 99

Une utilisation incorrecte

L'opérateur -- vous pouvez utiliser uniquement pour les variables. Si vous tentez d'utiliser -- n'est pas pour une variable, et pour un simple nombre, c'est génère une erreur. Voici un exemple de code avec l'erreur:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Lors de l'exécution de ce programme sera d'erreur:

Can't modify constant item in postdecrement (--) at script.pl line 3, near "100--"
Execution of script.pl aborted due to compilation errors.

Exactement la même, vous ne pouvez pas l'appliquer aux tableaux:

▶ Run
#!/usr/bin/perl

my @arr = (1, 2, 3);

@arr--; # error
Can't modify private array in postdecrement (--) at script.pl line 5, near "@arr--"
Execution of script.pl aborted due to compilation errors.

Et à хешам:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1,
);

%h--; # error
Can't modify private hash in postdecrement (--) at script.pl line 7, near "%h--"
Execution of script.pl aborted due to compilation errors.

Autres articles