make perl, wenn Sie versuchen, auf nicht definierten Hash-Schlüssel zuzugreifen

7

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

    
David B 01.08.2010, 07:28
quelle

3 Antworten

14

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 Ссылка

beschrieben

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

    
Eric Strom 01.08.2010, 15:09
quelle
7

Verwenden Sie Hash :: Util:

%Vor%

Ausgabe:

%Vor%

Es gibt noch andere Funktionen, die es erlauben zu bestimmen, welche Schlüssel erlaubt sind, und nicht nur, was bereits vorhanden ist.

    
ysth 01.08.2010 07:34
quelle
4

Sie können dafür eine einfache Funktion schreiben:

%Vor%     
Eugene Yarmash 01.08.2010 08:34
quelle

Tags und Links