Korzystam z następującego kodu, aby sprawdzić, czy skrót jest pusty. Czy istnieje lepsza metoda i czy można jej bezpiecznie używać?jak sprawdzić, czy hash jest pusty w perlu
if (!keys %hash) { print "Empty";}
Korzystam z następującego kodu, aby sprawdzić, czy skrót jest pusty. Czy istnieje lepsza metoda i czy można jej bezpiecznie używać?jak sprawdzić, czy hash jest pusty w perlu
if (!keys %hash) { print "Empty";}
if (%hash)
będzie działać dobrze.
Od perldoc perldata:
Jeśli oceniać mieszania w kontekście skalarnym, zwraca false, jeśli hash jest pusty. Jeśli są jakieś pary klucz/wartość, to zwraca true; dokładniej, zwracana wartość jest ciągiem składającym się z liczby użytych wiaderek i liczby przydzielonych wiader, oddzielonych przecinkiem .
Wydaje się znacznie wolniejsze niż 'klucze% hash'. – choroba
Prostsze:
if (!%hash) {
print "Empty";
}
! narzuca kontekst skalarny i hash oceniana w kontekście skalarnym zwraca:
false
czy są zerowe klawisze (nie zdefiniowane w dokumentacji, ale eksperymentalnie zwraca 0
ciąg oznaczający ile używany/przydzielane wiadra są używane przez> 0 kluczy, który będzie oczywiście NIE fałszywe (np „3/6”)
było a bug który spowodował związane mieszań w kontekście skalarnym zawsze return false. Błąd był fixed in 5.8.5. Jeśli obawiasz się kompatybilności wstecz, to wracam do niej z if(!keys %hash)
. W przeciwnym razie użyj polecenia if(!%hash)
zgodnie z zaleceniami innych osób.
"Lepsze" to termin subiektywny. Jednak twierdzę, że kod, który jest łatwiejszy do zrozumienia, można określić jako "lepszy". Z tego powodu wnioskuję, że !keys %hash
jest lepszy, ponieważ wszyscy piszący kod perl będą wiedzieli, co ten kod robi i działa. !%hash
jest co najmniej musiałem spojrzeć w górę, aby upewnić się, czy to naprawdę działa, czy tylko wygląda, jakby to działało. (Powodem jest to, że zwracana wartość skrótu w kontekście skalarnym jest dość myląca, a zachowanie tablic w kontekście skalarnym jest dobrze znane i często używane.)
Zapisano także !keys %hash
.
Więc nie, nie ma lepszego ani oszczędzającego sposobu sprawdzenia, czy skrót jest pusty.
Jeśli uważasz, że Twoje pytanie zostało odebrane, powinieneś zaakceptować odpowiedź, klikając znacznik wyboru po lewej stronie. – TLP