Der Betreiber -- in Perl

Der Betreiber doppelte Minuszeichen verwendet Perl, um zu verringern den Wert der Variablen um eins.

Beispiel:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Das Programm zeigt die Anzahl der 99.

Formen der Aufnahme

Es gibt zwei Formen der Aufnahme: damit können Sie den Operator nach der Variablen (Postfix Notation) oder vor einer Variablen (префиксная Notation):

$i--;
--$i;

Wenn das Team befindet sich auf eine Zeile, dann gibt es keinen Unterschied zwischen Präfix-und постфиксной Form der Aufzeichnung. Der Unterschied ist nur, wenn der Betreiber -- verwendet in der Zusammensetzung der einige Teams. Wenn -- befindet sich vor der Variablen, wird der Wert der Variablen zu erhöhen, bevor Sie dem restlichen Team. Wenn -- befindet sich nach einer Variablen, so der Wert der Variablen erhöht nach der Ausführung des restlichen Teams.

Hier ist ein Beispiel.

Hier ist dieses Programm zeigt eine Zahl von 100 und 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

Aber dieses Programm zeigt die Zahl 99 zweimal:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- für die Zeilen

Bei Betreiber ++ gibt es eine spezielle Magie, wenn er angewendet wird auf eine Variable in dem sich die Zeile befindet.

Der Betreiber -- eine solche Magie nicht. Der String wird in eine Zahl, und von dieser Zahl subtrahiert Einheit.

Hier ist ein Beispiel. Das Programm zeigt die Anzahl der -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Hier ein paar Beispiele was macht der Betreiber -- mit der Zeichenfolge in der Variablen:

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

Falsche Verwendung

Der Betreiber -- kann nur für Variablen. Wenn Sie versuchen, verwenden -- nicht für Variablen, sondern auch für die einfachen zahlen, dann ist es einen Fehler aus. Hier ist ein Beispiel Code mit dem Fehler:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Bei der Ausführung dieses Programms wird der Fehler:

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

Ebenso kann es nicht anwenden auf Arrays:

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

Und zu Hesham:

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

Andere Artikel