3 Apr 13:54
Re: Fragen zum Konstruktordesign.
<sigsegv <at> aldebaran.cs.tu-berlin.de>
2003-04-03 11:54:57 GMT
2003-04-03 11:54:57 GMT
Hallo Mauricio. Danke fuer Deine schnelle Antwort. Deine erste Loesung gefaellt mir am besten. Allerdings habe ich noch ne Frage. Wenn ich das richtig verstehe, dann ist init private. init duerfte ich doch dann nur aus Foo aufrufen. Bei meinem Design warf ruby mir einen Fehler um die Ohren, dass ich doch bitte nicht eine private Methode aufrufen soll. Muss ich die Klassen Methoden mit "class << self"-Trick schreiben, oder liegt das an send? Beides kann ich mir nicht recht vorstellen. Warum geht es aber trozdem? Am Freitag, 28. März 2003 11:02 schrieb Mauricio Fernández: > batsman <at> tux-chan:/tmp$ expand -t 2 x.rb > class Foo > def initialize(*data) > #... > end > > def init(schluessel) > @schluessel = schluessel > end > > private :init > > class << self > def load(irgendetwas) > obj = Foo.new > #... > obj.send(:init, irgendetwas)(Continue reading)
]
> Deine erste Loesung gefaellt mir am besten. Allerdings habe ich noch ne Frage.
> Wenn ich das richtig verstehe, dann ist init private. init duerfte ich doch
> dann nur aus Foo aufrufen. Bei meinem Design warf ruby mir einen Fehler um
> die Ohren, dass ich doch bitte nicht eine private Methode aufrufen soll.
>
> Muss ich die Klassen Methoden mit "class << self"-Trick schreiben, oder liegt
> das an send? Beides kann ich mir nicht recht vorstellen. Warum geht es aber
> trozdem?
Private Methoden können mit obj.send(:meth,*params) aufgerufen werden.
"class << self; def foo; end; end" hat damit nichts zu tun, das ist nur
eine andere Möglichkeit für "def self.foo"
z.B.,
class A
def A.foo
end
end
class << A
def foo
end
end
Hi Mauricio,
besser hätte ich es auch nicht formulieren können.
Gruß,
Pit
RSS Feed