Erweitern eines Objekts in Perl

8

Ich habe ein Basisobjekt namens RuleObject und ein Objekt, das von dem namens RuleObjectString erbt. Ich habe eine neue Methode in RuleObjectString, die ich in meinem Code aufrufen möchte, der dieses Objekt verwendet. Aber ich bekomme den Fehler. 'Die Objektmethode "compare" kann nicht über das Paket "RuleObject" in der Zeile ./testobject.pl der Zeile 10 gefunden werden.' Aber ich erstelle kein RuleObject. Ich erstelle einen RuleObjectString. Was mache ich hier falsch?

testobject.pl

%Vor%

RuleObject.pm

%Vor%

RuleObjectString.pm

%Vor%     
Mike 16.11.2012, 18:22
quelle

3 Antworten

12

Ich denke, Jmcneirney ist auf dem richtigen Weg. In Ihrem RuleObject -Konstruktor sagen Sie

%Vor%

ist das gleiche wie

%Vor%

oder

%Vor%

Aber was Sie wollen, ist, dass das Objekt als RuleObjectString gesegnet wird. Was Sie also tun wollen, ist

%Vor%

Jetzt

%Vor%

ruft den gleichen Konstruktor auf, aber das vom ersten Aufruf zurückgegebene Objekt wird als RuleObject und das zweite Objekt als RuleObjectString gesegnet.

    
mob 16.11.2012, 18:37
quelle
5

Das ist 2012, also sollten Sie überlegen, richtige OOP-Lösungen zu verwenden, anstatt das Rad neu zu erfinden.

Wenn Sie Elch verwenden, sieht die Lösung ungefähr so ​​aus (ungetestet):

RuleObject.pm

%Vor%

RuleObjectString.pm

%Vor%

Einfach! :)

    
toreau 17.11.2012 11:50
quelle
0

Versuchen Sie, das Objekt abzulegen und zu sehen, was es ist.

%Vor%

Es wird ein RuleObject sein.

Sie müssen möglicherweise eine neue () in RuleObjectString definieren und lass es Super :: new () aufrufen.

    
jmcneirney 16.11.2012 18:30
quelle

Tags und Links