Re: Verhalten von Modulen und Mixins
"Florian G. Pflug" <[email protected]> Mon, 27 Jan 2003 00:54:02 +0100
| Newsgroups | gmane.comp.lang.ruby.german |
|---|---|
| Message-ID | <[email protected]> |
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 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 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 ;-)) > 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 b) Klassen, als objekte betrachtet haben ne singleton-ableitung von Class als Klasse > :-( Entropie herrscht.... Danke für deine hilfe im Postbereich. Ralf > hat auch damit geholfen, und im Moment (wenn vielleicht nicht dauernd) > ist es mir wieder möglich, zu dieser Liste zu posten. vielleicht wechsel des e-mail providers andenken? ;-))) greetings, Florian Pflug