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

Các nhà điều hành x xử khác nhau tùy thuộc vào cách sử dụng nó.

Trong vô bối cảnh đó, nó được dùng để tạo ra một dòng mong muốn của chiều dài lặp đi lặp lại, các nhân vật. Chúng ta có thể nói rằng bản tuyên bố này làm cho việc "nhân" của chuỗi.

Trong danh sách bối cảnh (và nếu trái toán hạng được viết trong ngoặc hoặc với bằng cách sử dụng qw) ông lặp đi lặp lại một yếu tố một số quy định của thời gian.

Đây là một ví dụ về điều hành x vô trong bối cảnh:

▶ Run
#!/usr/bin/perl

my $str = 'A' x 4;

print $str;

Chương trình sẽ trưng bày một chuỗi bao gồm bốn nhân vật 'A': 'AAAA'.

Nếu trái toán hạng bạn chỉ định nhiều nhân vật, tất cả họ sẽ được lặp đi lặp lại:

▶ Run
#!/usr/bin/perl

my $str = 'Abc' x 2;

print $str;

Ví dụ này, thị một chuỗi 'AbcAbc'.

Sử dụng một chuỗi rỗng

Trong vô bối cảnh đó, các nhà điều hành x lặp đi lặp lại những chuỗi đó là quy định ở bên trái toán hạng số lần quy định đúng toán hạng.

Nếu bạn định như bên trái toán hạng là các chuỗi rỗng '', vô trong bối cảnh kết quả sẽ luôn luôn là một chuỗi rỗng, bất kể những giá trị đúng toán hạng:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $str = '' x 100;

print Dumper $str;

Kết luận của các chương trình, nó sẽ được nhìn thấy điều đó trong $str chứa một chuỗi rỗng.

Không có ý nghĩa để sử dụng này điều hành ở một vô bối cảnh đó, chuỗi rỗng.

Các giá trị của toán hạng phải

Trong vô bối cảnh toán hạng phải của các nhà điều hành x nói với bao nhiêu thời gian anh cần để lặp lại câu đó có chứa bên trái toán hạng. Trong trường hợp nếu toán hạng là một số nguyên dương, sau đó rõ ràng là, những gì xảy ra như là một kết quả.

Nhưng con số này không chỉ tích cực.

  • Nếu toán hạng phải là số 0kết quả luôn luôn là một chuỗi rỗng.
  • Nếu toán hạng phải được một số tiêu cực, kết quả là luôn là một chuỗi rỗng.

Trong trường hợp mã là use warnings;, sử dụng một số âm như một đúng các nhà điều hành sẽ hiển thị cảnh báo. Đây là một ví dụ về một kịch bản mà thị một chuỗi 'Negative repeat count does nothing at script.pl line 5.'.

▶ Run
#!/usr/bin/perl

use warnings;

my $str = 'a' x -3;

print $str;

Nếu toán hạng phải được một số tích cực với một phân phần này phân là phần đơn giản chỉ cần bị loại bỏ. Kết quả 'A' x 2.1 sẽ được chính xác giống như những quả 'A' x 2.99 — dòng 'AA'.

Danh sách bối cảnh

Trong danh sách bối cảnh đó, các nhà điều hành x lặp đi lặp lại những phần tử. Nhưng bên cạnh đó, bạn cần một danh sách bối cảnh đó, bạn cần cũng để chứa bên trái toán hạng trong ngoặc. Mã dưới đây sẽ tạo ra một mảng @arr trong đó có 3 yếu tố mỗi phần tử là một chuỗi 'a':

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = ('a') x 3;

print Dumper \@arr;

Nhưng nếu bạn không xác định đế ở bên trái toán hạng, và để viết my @arr = 'a' x 3;, các mảng @arrsẽ được chỉ có một mục, chuỗi 'aaa'.

Ngoài đơn giản ngoặc, bạn có thể sử dụng sự điều hành qw:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def) x 2;

print Dumper \@arr;

Khi bạn chạy mã này trong mảng @arr sẽ có yếu tố 4, chuỗi 'abc', 'def', 'abc', 'def'.

Tài liệu chính thức

Đây là một đoạn trong đầu ra perldoc perlop về điều hành x:

Multiplicative Operators

...

    Binary "x" is the repetition operator. In scalar context or if the left
    operand is not enclosed in parentheses, it returns a string consisting of
    the left operand repeated the number of times specified by the right
    operand. In list context, if the left operand is enclosed in parentheses
    or is a list formed by "qw/STRING/", it repeats the list. If the right
    operand is zero or negative (raising a warning on negative), it returns an
    empty string or an empty list, depending on the context.

        print '-' x 80;             # print row of dashes

        print "\t" x ($tab/8), ' ' x ($tab%8);      # tab over

        @ones = (1) x 80;           # a list of 80 1's
        @ones = (5) x @ones;        # set all elements to 5

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