Chciałbym całkowicie zresetować mój %hash
, tak aby nie zawierał żadnych klawiszy ani wartości. Wolę używać jednej linijki niż użyć pętli.Jak mogę całkowicie zresetować hash bez użycia pętli for?
Do tej pory próbowałem:
%hash = 0;
%hash = undef;
Ale to zarówno rzucać błędy w trybie ścisłym z ostrzeżeń włączone, więc napisałem prosty dla pętli osiągnąć to samo:
for (keys %hash) {
delete $hash{$_};
}
ten działa, ale naprawdę chciałbym to zrobić z jednym linerem. Czy istnieje sposób, aby po prostu zresetować hash, który przeglądam?
Jestem zdziwiony, że nikt nie ma już unasked pytanie. AFAICR Nigdy nie miałem potrzeby resetowania skrótu, ponieważ w Perlu można mieć naprawdę napięte zakresy. Zamiast tego pozwalam, by zmienne po prostu wypadały z zakresu; jeśli w pętli, nowy leksykalny zostanie utworzony z 'my' w górnej części. - Myślę, że jest to problem XY z miejscem na ulepszenie algorytmiczne, być może podać trochę więcej kontekstu? – daxim
Hash to globalny, który tworzę w pobliżu początku mojego programu po wszystkich kontrolach i saldach. Jest modyfikowany różnymi podprogramami, dopóki nie przydzielę ostatecznej wersji do tablicy. Biorąc pod uwagę ten przepływ, chyba że czegoś brakuje, uważam, że łatwiej jest mi "zresetować" ten konkretny hash po przypisaniu go do tablicy, niż odtworzyć go za pomocą instrukcji "my". (Możliwe, że przeoczyłem problem XY, ponieważ nie wiedziałem, jak zrobić coś w stylu resetowania hash) – Structure