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