Ich denke, der Titel ist selbsterklärend. Viele Male habe ich kleine Tippfehler und ich bekomme unerwartete Ergebnisse, wenn ich versuche, auf nicht definierte Hash-Schlüssel zuzugreifen. Ich weiß, dass ich vor jedem Zugriff auf einen Hash-Schlüssel defined
check hinzufügen kann, aber ich frage mich, ob es eine sauberere Möglichkeit gibt, vor solchen Fällen zu warnen ....
Am besten, Dave
Dies ist wahrscheinlich am besten mit einem gebundenen Hash getan. Mit gebundenen Variablen können Sie die Implementierung der Low-Level-Operationen der Variablen definieren. In diesem Fall möchten wir eine spezielle Fetch-Methode, die beim Zugriff auf nicht existierende Schlüssel endet:
%Vor% Bei der Implementierung von Safe::Hash
oben lade ich zuerst Tie::Hash
, was Tie::StdHash
liefert. Wenn Sie @ISA
auf Tie::StdHash
setzen, erhalten Sie in unserem neuen Paket Verknüpfungsmethoden, die sich wie normale Hashes verhalten. Jede dieser Methoden ist in Ссылка
In diesem Fall ist die einzige Methode zum Überschreiben FETCH
, die einen Verweis auf das ausgeblendete gebundene Objekt (in diesem Fall eine hashref) und den zu verwendenden Schlüssel erhält. Es prüft, ob der Slot vorhanden ist und gibt ihn zurück oder gibt einen Fehler aus