Re: Verhalten von Modulen und Mixins
[email protected] Sun, 26 Jan 2003 20:35:05 -0500 (EST)
| Newsgroups | gmane.comp.lang.ruby.german |
|---|---|
| Message-ID | <[email protected]> |
Hi -- On Mon, 27 Jan 2003, Florian G. Pflug wrote: > On Sun, Jan 26, 2003 at 12:34:04AM -0500, [email protected] wrote: > > Zwar ist Foo eine (die einzige) Instanz von Foo's Meta- oder > > Singleton-class, doch gilt Class als Foo's "offizielle" Klasse: > > > > irb(main):004:0> class Foo; end > > => nil > > irb(main):005:0> Foo.class > > => Class > Foo.class scheint immer "Class" zurückzuliefern Ja, wenn Foo eine Klasse ist :-) > jedoch: > --------------------------------------- > class Foo > puts "Foo:#{id}" > class <<self > puts "Foo(meta?):#{id}" > end > end > puts "Class:#{Class.id}" > --------------------------------------- > > liefert: > Foo:538109020 > Foo(meta?):538105340 > Class:538134140 Ja, das sind drei verscheidene Objekte. > und auch: > -------------------------------------- > class Foo > end > > foo = Foo::new > puts "foo:#{foo.class.id}" > > class <<foo > end > puts "foo(singleton):#{foo.class.id}" > -------------------------------------- > > liefert: > foo:538109020 > foo(singleton):538109020 > > D.h, offenbar erkennt man nicht so leicht, ob die Klasse eines objects ne > Singleton-Klasse(bzw anonyme klasse) ist, oder eine "normale" Klasse. > Jedenfalls nicht mit aObject.class :-( matz versteckt ruby-interna sehr > effektiv ;-)) Ja, denn die Rolle von obj.class ist, die offizielle, "historische" Klasse des Objekts anzukündigen. Ob die S-Klasse des Objekts schon existiert oder nicht, bleibt seinem Klasse (was man (bzw. Ruby :-) mit "die Klasse des Objekts" meint) ungeändert. Nicht, dass die S-Klasse irgendwie "weniger" eine Klasse ist, als die "historische" Klasse; bloss, es spielt eine verschiedene, etwas phantomische Rolle im Lebenslauf des Objekts. > > genauso wie die Klasse von foo nicht foo-Metaclass sondern Foo ist. > > Jedes Objekt hat eine Singletonclass, die auch keine andere Rolle > > spielt; deswegen ist es überflüssig, die Klasse eines Objekts als "des > > Objekts Singletonclass" zu beschrieben. > Ja, aber die Klasse der Klasse von foo (d.h die Klasse von Foo) ist die > Foo-metaclass. > > Ich denke, nicht jedes Object hat ne singletonklasse als Klasse, sondern nur > a) solche objekte, mit denen man "class <<aObject" gemacht hat Ja, stimmt - aber man kann (so weit ich weiss) um die Existenz derselben nicht probieren, ohne sie eine Existenz zu geben. Deswegen ist nicht zwischen Objekte, die eine S-Klasse haben, und die, die eine nicht haben, bedeutungsvoll zu unterscheiden. > b) Klassen, als objekte betrachtet haben ne singleton-ableitung von Class > als Klasse Das verstehe ich nicht -- wieso? David P.S. Wenn meine Botschaften auch im Mindesten kämpferisch oder ungeduldig klingen, ist das eindeutig meinem Mangel an Herrschaft der deutschen Sprache zuzuschreiben. Ich finde den Wechsel sehr interessant. -- David Alan Black home: [email protected] work: [email protected] Web: http://pirate.shu.edu/~blackdav