[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

how to implement class constants?

ruud grosmann

2/18/2008 8:42:00 AM

hi list,

what construct do I have to use in Ruby to create class constants (so
no instance necessary to use it)?

thanks, Ruud

5 Answers

7stud --

2/18/2008 10:01:00 AM

0

ruud wrote:
> hi list,
>
> what construct do I have to use in Ruby to create class constants (so
> no instance necessary to use it)?
>
> thanks, Ruud

This seems to work:

class Dog
Color = 'brown'

def Dog.Color
Color
end

end

puts Dog.Color

--
Posted via http://www.ruby-....

ThoML

2/18/2008 11:51:00 AM

0

> This seems to work:

Or maybe:

class Dog
Color = 'brown'
end

puts Dog::Color

Dog::Attrib = 'cute'

puts Dog::Attrib

ruud grosmann

2/18/2008 12:25:00 PM

0

Thank you both for you answer. I like the Class::var solution best;
the other one includes more typing.

I am fairly new to Ruby so all the time I am occupied asking myself
easy-to-answer questions. This really helps.

Another easy to answer question is a bit related:
Most of the time I find a class.var notation of a class::var notation.
In documentation I find class#method notation. How are these three
related to each other?

thanks, Ruud

Sebastian Hungerecker

2/18/2008 12:41:00 PM

0

ruud wrote:
> Most of the time I find a class.var notation of a class::var notation.

That's not entirely accurate. There is no class.var. There's object.method
(where object can be a class and the method can have the same name as a
variable, but it still has to be a method) and there's namespace::Constant
where namespace can be a class or a module and Constant has to be a constant
(it can't be any other sort of variable).
The :: is for accessing constants in a namespace and the . is for calling
methods on an object.
It is not possible to access non-constant variables from outside the class
without using methods designed for that purpose.


> In documentation I find class#method notation. How are these three
> related to each other?

class#method describes an instance method (as opposed to class.method which
would describe a class method). If you see something like String#length, that
means that you could e.g. write "hello".length, but not String.length. If you
see String.new, you have to actually type String.new and not something
like "hello".new.


HTH,
Sebastian
--
Jabber: sepp2k@jabber.org
ICQ: 205544826

ruud grosmann

2/18/2008 12:50:00 PM

0

On 18/02/2008, Sebastian Hungerecker <sepp2k@googlemail.com> wrote:

Sebastian,
it couldn't have been clearer. Thank you for your extensive reply!

Ruud