Operator ++ w Perl

Operator podwójny plus stosowany w Perl, aby zwiększyć wartość zmiennej o jeden.

Przykład:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i++;

print $i;

Program wyświetla na ekranie liczbę 101.

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 101:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i++;
say $i;

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

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say ++$i;
say $i;

++ dla linii

U operatora ++ jest specjalna magia. Działa on w sposób szczególny, jeśli go zastosować się do zmiennej, w której znajduje się ciąg znaków.

A ciekawe co u operatora -- takiej magii nie ma.

Przykład. Oto ten program wypisze na ekran ciąg a2:

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str++;

print $str;

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

'a' -> 'b'
'b' -> 'c'
'z' -> 'aa'
'aa' -> 'ab'
'az' -> 'ba'
'zz' -> 'aaa'

'A1' -> 'A2'
'A9' -> 'B0'

'undef' -> 'undeg'

'A+100' -> '1'

Przy użyciu operatora ++ z wierszami istnieje wiele subtelności. Najlepiej w ogóle nie używać w odniesieniu do wierszy. Jeśli go służy do operacji na łańcuchach, to trzeba bardzo dobrze rozumieć jak to działa, czy będą błędy. Ale to możliwe, że człowiek które po was będzie działać z tym kodem nie tak dobrze rozumie jak działa ++ dla wierszy i przy zmianie kodu doda tam błędów.

Niewłaściwe używanie

Operator ++ można używać tylko do zmiennych. Jeśli spróbujesz użyć ++ 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 postincrement (++) 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 postincrement (++) 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 postincrement (++) at script.pl line 7, near "%h++"
Execution of script.pl aborted due to compilation errors.

Inne artykuły