Operatøren ++ i Perl

Den dobbelt-plus-operator bruges i Perl til at øge værdien af en variabel ved en.

Eksempel:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i++;

print $i;

Programmet vil vise nummer 101.

Blanketten

Der er to former for optagelse: du kan angive den erhvervsdrivende efter variable (Postfix notation), eller inden variabel (prefix notation):

$i++;
++$i;

Hvis kommandoen er på en linje, der er ingen forskel mellem prefix-og Postfix notation af. Der er en forskel kun, hvis operatøren ++ bruges som en del af et team. Hvis ++ er beliggende i foran variable værdien af den variable vil stige, før du udfører de resterende kommandoer. Hvis ++ er efter den variabel, så værdien af den variable vil stige efter udførelse af de resterende kommandoer.

Her er et eksempel.

Dette program viser nummer 100 og 101:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i++;
say $i;

Men dette program viser antallet 101 to gange:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say ++$i;
say $i;

++ for rækker

Operatøren ++ har en særlig magi. Det virker på en bestemt måde, hvis det anvendes til en variabel som en streng.

Og det er interessant, at operatøren -- , så der er ingen magi.

Eksempel. Dette program vil vise strengen a2:

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str++;

print $str;

Her er nogle eksempler, som vil gøre operatøren ++ med strengen i en variabel:

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

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

'undef' -> 'undeg'

'A+100' -> '1'

Når du bruger operatøren ++ med strygere, der er en masse finesser. Det er bedst ikke at anvende til rækker. Hvis du brug for en række operationer, du har en meget god forståelse af hvordan det virker, eller der er fejl. Men det er muligt, at folk efter at, hvor du bliver nødt til at arbejde med denne kode ikke så godt med at forstå, hvordan en ++ for strygere, og når du ændrer kode for at tilføje bugs.

Misbrug

Operatøren ++ kan kun anvendes til variabler. Hvis du forsøger at bruge ++ ikke for variablen, og primtal, som det vil generere en fejl. Her er et eksempel på en kode med fejl:

▶ Run
#!/usr/bin/perl

my $i = 100++; # error!

Når du kører dette program, vil det fejl:

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

På samme måde, det kan ikke anvendes til arrays:

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

Og hashes:

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

Andre artikler