Làm thế nào để vượt qua những mảng ở Perl
Nhiệm vụ. Trong mã của Perl chương trình có một mảng @arr
(ba chữ cái đầu từ chữ "mảng"). Trong mảng này có giá trị.
Anh cần phải đi qua tất cả các mảng yếu tố và thực hiện một số hoạt động với mỗi mục.
Đi qua các mảng sử dụng foreach
Thế nên cách giải quyết vấn đề này là để sử dụng foreach
. Đây là một mẫu chương trình:
▶ Run
my @arr = (1, 2, 3);
foreach my $el (@arr) {
warn $el;
}
Đó là tất cả rất đơn giản. Đó là một mảng. Tiếp theo chúng ta tạo ra một biến $el
(viết tắt của từ element
). Chu kỳ
foreach
nơi đó biến yếu tố đầu tiên của các mảng (trong ví dụ của chúng tôi số này là 1).
Thực hiện những vòng lặp cơ thể warn $el;
— này mang lại
các giá trị trên màn hình. Chu kỳ foreach
đặt vào biến $el
tiếp theo giá trị từ mảng
một lần nữa thực hiện những vòng lặp cơ thể. Đây là lặp đi lặp lại cho đến khi lặp cơ thể không phải là thực hiện tất cả các mảng yếu tố.
Đi qua các mảng sử dụng một vòng for
Đây là một mẫu chương trình làm thế nào để đi bộ trên một Perl loạt sử dụng một vòng tương tự như những vòng lặp trong ngôn ngữ C:
▶ Run
my @arr = (1, 2, 3);
for (my $i = 0; $i < @arr; $i++) {
warn $arr[$i];
}
What ' s going on. Đó là một mảng @mũi. Sau đó chúng tôi tạo ra một biến mới $i
và giao nó giá trị 0 (0 là các chỉ số
các yếu tố đầu tiên trong một Perl mảng). Sau đó có thể vòng cơ thể warn $arr[$i];
. Sau đó, biến $i
với
điều hành ++
là một tăng. Nó sau đó kiểm tra điều kiện $i < @arr
. Nếu
tình trạng trở về thực sự, sau đó, tất cả lặp đi lặp lại.
Giải pháp này là hơi phức tạp hơn so với các giải pháp sử dụng foreach
. Anh cần phải cẩn thận làm việc với những ranh giới giá trị. Nếu đó là sai
để viết một kiểm tra, bạn có thể bỏ qua những giá trị cuối cùng
hoặc để truy cập vào không tồn tại một phần tử ngoài tố cuối cùng của các mảng (điều trị này sẽ trở lại undef
).
Đây là một ví dụ chương trình làm việc cùng một cách, nhưng sử dụng một điều kiện khác nhau for
:
▶ Run
my @arr = (1, 2, 3);
for (my $i = 0; $i <= $#arr; $i++) {
warn $arr[$i];
}
for
mảng nó có ý nghĩa để sử dụng nếu bạn đang ở trong vòng cơ thể không nên chỉ có giá trị của các yếu tố, và số của nó. Nhưng trong trường hợp này
bạn có thể sử dụng foreach
chu kỳ tự phơi bày sự biến với các chỉ số:
▶ Run
my @arr = (1, 2, 3);
my $i = 0;
foreach my $el (@arr) {
warn "index: $i value: $el";
$i++;
}
Chọn điều này là dễ dàng hơn cảm nhận của các người và ít nhạy cảm hơn để Bahamas với giá trị biên giới.
Nhưng có một cách thuận tiện hơn để nói điều tương tự với each
.
Đi qua các mảng sử dụng while
và each
Từ khóa each
là không được sử dụng đó rất thường xuyên, nhưng hầu như luôn luôn khi nó sử dụng
nó sử dụng để làm việc với Manh. Ít được biết đến, nhưng each
có thể được sử dụng để
đi qua các mảng, với các chỉ số của các yếu tố và các yếu tố chính. Ở đây là
trước mã được viết bằng each
:
▶ Run
my @arr = (1, 2, 3);
while (my ($i, $el) = each @arr) {
warn "index: $i value: $el";
}
each
có thể được áp dụng cho mảng từ Perl 5.12. Nếu bạn chạy mã này trên hơn
trước đó một phiên bản của Perl, nó sẽ lỗi:
Type of arg 1 to each must be hash (not private array) at script.pl line 5, near "@arr) "
Execution of script.pl aborted due to compilation errors.
Chủ đề liên quan
Các bài viết khác
Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/