Operatøren -- i Perl

Dobbelt minus-operator bruges i Perl til at reducere værdien af en variabel ved en.

Eksempel:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Programmet vil vise antallet 99.

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 antal 100 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

Men dette program vil vise antallet 99 to gange:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- for rækker

Har operatøren ++ der er en særlig magi, når det anvendes til en variabel som en streng.

Operatøren -- , så der er ingen magi. Strengen er tvunget ind i et nummer, og fra dette tal trækker en.

Her er et eksempel. Programmet viser antal -1

▶ 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' -> -1
'100ABC' -> 99
'0100ABC' -> 99

Misbrug

Operatøren -- kan kun anvendes til variabler. Hvis du forsøger at bruge -- er ikke variable, og for en enkelt nummer, 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 postdecrement (--) 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 postdecrement (--) 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 postdecrement (--) at script.pl line 7, near "%h--"
Execution of script.pl aborted due to compilation errors.

Andre artikler