L'operatore -- in Perl

L'operatore doppio meno utilizzato in Perl per ridurre il valore di una variabile in uno.

Esempio:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Il programma visualizza il numero di 99.

Modulo di registrazione

Ci sono due forme di registrazione: è possibile specificare l'operatore dopo la variabile (suffisso forma di registrazione) o prima variabile (prefisso forma di registrazione):

$i--;
--$i;

Nel caso in cui la squadra è uno a posto, allora non c'è differenza tra le notazioni prefissa e postfix modulo di registrazione. La differenza è solo se l'operatore -- viene utilizzato come parte di un team. Se -- si trova di fronte a una variabile, il valore della variabile aumenterà prima di eseguire il resto della squadra. Se -- si trova dopo la variabile, il valore di una variabile aumenta dopo il resto della squadra.

Ecco un esempio.

Ecco il programma visualizzerà il numero 100 e 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

Ma questo programma visualizza il numero 99 due volte:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- per le righe

Il gestore ++ c'è una speciale magia quando viene applicato a una variabile in cui si trova la stringa.

L'operatore -- così non c'è nessuna magia. Riga è riportato il numero e questo numero viene sottratto unità.

Ecco un esempio. Il programma visualizzerà il numero -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Ecco alcuni esempi di quello che farà l'operatore -- con una stringa in una variabile:

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

L'uso improprio di

L'operatore -- può essere utilizzato solo per le variabili. Se si tenta di utilizzare -- non per la variabile, e per un numero primo, allora questo è genera un errore. Ecco un esempio di codice di errore:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Quando si esegue questo programma sarà un errore:

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

Allo stesso modo non può essere applicato a matrici:

▶ 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.

E a хешам:

▶ 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.

Altri articoli