O operador -- em Perl

O operador duplo menos utilizado em Perl para reduzir o valor da variável em um.

Exemplo:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

O programa exibirá o número de 99.

O formulário de entrada

Existem duas formas de registros: você pode especificar um operador, após uma variável (postfix formulário de registo) ou antes de uma variável (префиксная o formulário de entrada):

$i--;
--$i;

No caso de a equipe está em uma linha, então não há diferença entre префиксной e постфиксной forma de gravação. A diferença é apenas se o operador -- é usado como parte de alguma equipe. Se -- está na frente de uma variável, o valor da variável aumentar antes de executar o restante da equipe. Se -- encontra-se depois a uma variável, então o valor da variável aumentar após a execução do restante da equipe.

Aqui está um exemplo.

Ora, este é o programa exibirá o número 100 e 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

E aqui esta o programa exibirá o número 99 duas vezes:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- para as linhas de

Eu operador ++ tem uma magia quando ele é aplicado a uma variável em que se encontra a cadeia.

Operador de -- tal magia não. A linha a seguir ao número e a partir deste número é subtraído unidade.

Aqui está um exemplo. O programa exibirá o número -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Aqui estão alguns exemplos que fará com que o operador -- com a cadeia de caracteres em uma variável:

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

Uso indevido

O operador -- , pode usar apenas para as variáveis. Se você tentar usar o -- não é uma variável, e para um número primo, então é erro. Aqui está um exemplo de código com o erro:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Quando você executa este programa seria um erro:

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

Exatamente o mesmo não se aplica a matrizes:

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

E a хешам:

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

Outros artigos