Kann ich nicht von innerhalb der Klasse auf die private Methode zugreifen?

8

Warum kann ich nicht auf die private Methode check_url im folgenden Code einer gekapselten Klassenmethode zugreifen?

%Vor%

PS. Ich habe auch versucht, self.check_url und es hat nicht funktioniert.

    
user1049097 30.11.2011, 00:18
quelle

2 Antworten

10

In Ruby können private Methoden nicht mit einem expliziten Empfänger aufgerufen werden. Sie können also self.check_url nicht aufrufen. Rufen Sie stattdessen check_url auf.

Ihr anderes Problem ist, dass Sie check_url als Instanzmethode definiert und in einer Klassenmethode aufgerufen haben. Verschiebe die check_url in den class << self Bereich:

%Vor%     
miaout17 30.11.2011, 00:29
quelle
3

check_url ist als Instanzmethode definiert, und Sie versuchen, über eine Klassenmethode darauf zuzugreifen (die Methode ist für die Klasse nicht definiert, sie ist für eine Instanz definiert). Ändern Sie def check_url in def self.check_url oder fügen Sie sie in den class << self -Block ein.

Sind Sie sicher, dass Sie einen privaten Methodenfehler erhalten, oder erhalten Sie tatsächlich einen undefinierten Methodenfehler (beide sind ein NoMethodError , aber mit verschiedenen Nachrichten)?

    
Martin Gordon 30.11.2011 00:36
quelle