Hãy nói rằng chúng ta định nghĩa một băm vô danh như thế này:Làm thế nào để xóa một băm Perl
my $hash = {};
Và sau đó sử dụng băm sau đó. Sau đó là lúc để trống hoặc xóa băm để sử dụng lại . Sau khi một số tìm kiếm của Google, tôi thấy:
%{$hash} =()
và:
undef %{$hash}
Cả hai sẽ phục vụ nhu cầu của tôi. Sự khác nhau giữa hai cái là gì? Có phải cả hai cách đều giống nhau để làm trống một băm?
Chúng gần như giống hệt nhau. sau khi undef, được định nghĩa sẽ trả về false, sau khi =(), được định nghĩa là vẫn đúng. – rurban
Tôi nghĩ rằng phản đối của rurban đối với câu trả lời này là khá quan trọng. Có lẽ Ether có thể cập nhật câu trả lời của mình để đề cập đến sự khác biệt đó? – antred
Việc sử dụng định nghĩa (% băm) không được chấp nhận và không được sử dụng. Vì vậy, phản đối của rurban cuối cùng có thể là tranh luận. Từ các tài liệu perl cho "đã xác định": "Việc sử dụng xác định trên tổng hợp (băm và mảng) không được dùng nữa. Nó được sử dụng để báo cáo liệu bộ nhớ cho tổng hợp đó có được phân bổ hay không. Hành vi này có thể biến mất trong các phiên bản tương lai của Perl". – PhilHarvey