hi list,
what construct do I have to use in Ruby to create class constants (so
no instance necessary to use it)?
thanks, Ruud
hi list,
what construct do I have to use in Ruby to create class constants (so
no instance necessary to use it)?
thanks, Ruud
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
This seems to work:
Or maybe:
class Dog
Color = ‘brown’
end
puts Dog::Color
Dog::Attrib = ‘cute’
puts Dog::Attrib
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
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
On 18/02/2008, Sebastian H. [email protected] wrote:
Sebastian,
it couldn’t have been clearer. Thank you for your extensive reply!
Ruud
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs