Ruby "Instanzvariable nicht initialisiert" Warnung

9

Als ich im Rahmen einer LinkedList-Implementierung einen Code zum Erlernen der Sprache in Ruby schrieb, stieß ich auf folgende Warnung:

Bei der "add" -Methode wird der Kopf erstellt, wenn er nicht bereits existiert, d. h.

%Vor%

Ich bekomme dann die Warnung

%Vor%

Wie werde ich diese Warnung los? Was ist der idiomatische Weg, dies zu tun?

    
Steve B. 20.01.2010, 02:52
quelle

4 Antworten

17

Zusätzlich zum Vorschlag von Matchu können Sie auch defined? verwenden, um @head lazily hier zu initialisieren, ohne die Warnung zu provozieren:

%Vor%

Das normale Idiom für solche Dinge ist

%Vor%

was auch nicht die Warnung provoziert, aber in diesem Fall scheint es so, als ob Sie etwas tun müssen, wenn @head nicht definiert wurde, und es ist nicht idempotent, also wird ||= in diesem Fall nicht sehr gut funktionieren . ||= hat auch den Nachteil, nicht zwischen false, nil oder unset unterscheiden zu können. Die Initialisierung auf nil in initialize ist wahrscheinlich die beste Wahl.

    
Logan Capaldo 20.01.2010, 03:18
quelle
9

Sie könnten @head als nil in der Methode initialize für eins deklarieren.

    
Matchu 20.01.2010 03:09
quelle
0

Sie könnten etwas tun wie:

%Vor%     
Nerdman 12.02.2014 15:53
quelle
-4

Sie können die Operation ! für @head nicht ausführen, wenn sie nicht existiert. Sie müssen es zuerst initialisieren. Sie sollten es wahrscheinlich als nil deklarieren.

    
Michael Dickens 20.01.2010 03:18
quelle

Tags und Links