Operator -- w Perl

Operator podwójny minus jest używany w Perlu, aby zmniejszyć wartość zmiennej o jeden.

Przykład:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Program wypisze na ekran liczba 99.

Formy zapisu

Istnieją dwie formy zapisu: można określić operator po zmiennej (przyrostkowe ustawienia forma zapisu) lub przed zmiennej (префиксная forma zapisu):

$i--;
--$i;

W przypadku, gdy drużyna znajduje się jeden na linii, to nie ma różnicy między префиксной i постфиксной formą zapisu. Różnica jest tylko jeśli operator -- jest używany w składzie jakiegoś zespołu. Jeśli -- znajduje się przed zmiennej, to wartość zmiennej wzrośnie przed wykonaniem reszty drużyny. Jeśli -- znajduje się po zmiennej, to wartość zmiennej wzrośnie po wykonaniu reszty drużyny.

Oto przykład.

Oto ten program wypisze na ekranie liczby 100 i 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

A oto ten program wypisze na ekran liczba 99 dwa razy:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- dla linii

U operatora ++ jest specjalna magia gdy jest on stosowany do zmiennej, w której znajduje się ciąg znaków.

U operatora -- takiej magii nie ma. Wiersz zawiera liczby i z tej liczby odejmuje się jednostka.

Oto przykład. Program wypisze na ekran liczba -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Oto kilka przykładów co zrobi operator -- z ciągiem w zmiennej:

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

Niewłaściwe używanie

Operator -- można używać tylko do zmiennych. Jeśli spróbujesz użyć -- nie dla zmiennej, a dla liczby pierwszej, to jest to wyświetli błąd. Oto przykład kodu z błędem:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Po uruchomieniu tego programu będzie błąd:

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

Tak samo nie można go stosować do macierzy:

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

I do хешам:

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

Inne artykuły