Các nhà điều hành -- trong Perl

Đôi trừ điều hành được sử dụng trong Perl để làm giảm giá trị của một biến bởi một.

Ví dụ:

▶ Run
#!/usr/bin/perl

my $i = 100;

$i--;

print $i;

Chương trình sẽ hiển thị các số 99.

Các hình thức ghi

Có hai hình thức ghi: bạn có thể xác định điều hành sau khi biến (Tố ký hiệu) hoặc trước khi biến (tố ký hiệu):

$i--;
--$i;

Nếu lệnh là trên một đường thẳng, không có sự khác biệt giữa tố tố và ký hiệu. Có một sự khác biệt duy nhất nếu các nhà điều hành -- được dùng như là một phần của đội. Nếu -- là nằm ở phía trước biến giá trị của biến sẽ tăng trước khi thực hiện phần còn lại lệnh. Nếu -- là sau khi biến, sau đó giá trị của biến sẽ tăng sau khi thực hiện phần còn lại lệnh.

Đây là một ví dụ.

Này, chương trình hiển thị các số 100 và 99:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say $i--;
say $i;

Nhưng chương trình này sẽ hiển thị số 99 hai lần:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $i = 100;

say --$i;
say $i;

-- cho hàng

điều hành ++ là có một ma thuật đặc biệt khi nó được áp dụng cho một biến đó là một chuỗi.

Các nhà điều hành -- vì vậy, không có phép thuật. Chuỗi là bị ép buộc vào một số và số này trừ một.

Đây là một ví dụ. Chương trình hiển thị các số -1

▶ Run
#!/usr/bin/perl

my $str = 'a1';

$str--;

print $str;

Ở đây là một số ví dụ đó sẽ làm cho các nhà điều hành -- với chuỗi trong một biến:

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

Lạm dụng

Các nhà điều hành -- chỉ có thể được sử dụng cho các biến. Nếu anh cố gắng sử dụng -- không thể thay đổi, và một số đơn giản, nó sẽ tạo ra một lỗi. Đây là một ví dụ của mã với đề:

▶ Run
#!/usr/bin/perl

my $i = 100--; # error!

Khi bạn chạy chương trình này, nó sẽ lỗi:

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

Tương tự như vậy, nó không thể được áp dụng cho mảng:

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

Và băm:

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

Các bài viết khác