Giả sử trong Perl tôi có danh sách các tham chiếu băm và mỗi trường bắt buộc phải chứa một trường nhất định, giả sử foo
. Tôi muốn tạo một danh sách chứa tất cả các ánh xạ của foo
. Nếu có băm không chứa foo
thì quá trình sẽ không thành công.Perl, nhận tất cả giá trị băm
@hash_list = (
{foo=>1},
{foo=>2}
);
my @list =();
foreach my $item (@hash_list) {
push(@list,$item->{foo});
}
#list should be (1,2);
Có cách nào ngắn gọn hơn để thực hiện việc này trong Perl không?
Tôi chỉ muốn làm rõ bạn không tạo danh sách ánh xạ, bạn đang tạo danh sách bao gồm mỗi giá trị băm 'foo'. Và ví dụ mã của bạn không liên quan gì đến 'quá trình không thành công' để bạn 'không chỉ yêu cầu súc tích hơn. –
Nói chung: bất cứ khi nào bạn thấy mình đang làm 'foreach ... {... push ..}' bạn có thể làm cho mã ngắn hơn và đơn giản hơn bằng cách sử dụng bản đồ hoặc grep. – Ether