[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16979] Re: rb_define_class() vs Class.new()

From: Kero van Gelder <kero@...4050.upc-d.chello.nl>
Date: 2001-06-27 22:25:12 UTC
List: ruby-talk #16979
> > The name of a class is _the_ name of that class.
> > I do not understand what you mean with ``just a name''.
> 
> Classes do not need to have names. It's a pure convenience used when
> inspecting objects of that class, and when using things such as
> Class#name.
> 
> When you say
> 
>    class Kero
>       # ...
>    end

*wakes up* ... Who, me?

> it is not an essential part of Ruby's semantics that the class you
> create is named 'Kero'. The class could equally well not have a
> name. All that happens is that a constant is created, called Kero, and
> that constant is set to point to the class object for the class you
> just created. 'Kero' is _not_ the name of the class. 'Kero' is the
> name of the constant that references the class.

I am slowly starting to understand that; it is not clear from
  http://www.ruby-lang.org/en/man-1.4/syntax.html
because it is easy to interpret this in the ``classical'' sense, where
the name is a property of the class itself, say, the instance
variable @name.

Plus, on the C-side in rb_define_class(), an explicit name is given!
(Name of global constant that will refer to ...)

If I ever conceive of a short description to help clarify, I'll tell you.

[snip]

> Creating anonymous classes is basically the same
> 
>   Dave = Class.new
> 
> Here Dave is a constant that points to an anonymous class.

Essentially, you're saying that all classes are anonymous. For the
interpreter that is not a problem at all, of course.

> Now... to the naming issue.
> 
> Ruby classes do not need names: they are only there for output
> purposes. So, matz decided to implement names by cheating: when you
> ask for a class name, Ruby searches through the constants until it
> finds one that references the class, and then uses it. For efficiency,
> it caches the results of doing this in the class object. For anonymous
> objects, the lookup and caching is done when you first try to ask for
> the name. For classes defined using 'class XXX', the caching is done
> when the class is defined.

Hm, ``cheating'' and ``efficiency'' in one paragraph.

OK, I understand enough of what happens and to some extent why it
happens. 

Nevertheless, Dave.name() from the example above produces a non-empty
String, which does not match my idea of ``anonymous''.

Due to the caching and constants not being allowed to change, the
concept of a name of a Class is still useful and usable. Caching,
however, is an implementation detail. The constants ensure that a
Class can have many names, but no two classes have the same name,
still.

So let's close this discussion ;)
Thank you all for your comments, they help a lot to get me into Ruby.

Now where did I leave those other small questions that I have...

Bye,
Kero.

+--- Kero ------------------------------ kero@chello.nl ---+
|  Don't split your mentality without thinking twice       |
|                          Proud like a God -- Guano Apes  |
+--- M38c ------------------ http://huizen.dds.nl/~kero ---+

In This Thread

Prev Next