Actually, I want an easy way to access a class variable from
another class. I construct objects, which I want them to
carry an array specific to their class:
class Foo
@@info = …
…
end
class Bar
@@info = …
…
end
As I see from your reply, the only way to access a class
variable from another class (or outside the class in general)
is to define self.foo and foo methods; foo stands for the class
var.
This sounds a little bit wierd to me, since, in the book[*] I have,
the author accesses a class variable implicitly, without having
define self.foo and foo inside the class.
Thanks for your reply!
[*] The Ruby Way - Hal Fulton
Enjoy,
···
On Sun, Oct 12, 2003 at 09:21:24PM +0900, ts wrote:
elathan@velka:~/src/ruby> ruby test.rb
test.rb:7: undefined method `bar=’ for Foo:Class (NoMethodError)
Is this behaviour normal?
Yes, what you want is a class instance variable
–
University of Athens I bet the human brain
Physics Department is a kludge --Marvin Minsky
This sounds a little bit wierd to me, since, in the book[*] I have,
the author accesses a class variable implicitly, without having
define self.foo and foo inside the class.
Class variables are directly visible only down the class hierarchy:
class A
@@x = 1
end
class B < A
puts @@x # 1
end
You can give access to them, but you have to do it explicity:
class A
def self.peek # technically you don’t have to call it info
@@info
end
def self.poke(x)
@@info = x
end
end
(This is similar to the kind of get/set methods that are often
implemented using instance variables, but the resemblance is
superficial. Class variables are a different creature, and therfore
not a drop-in replacement for instance variables.)
Just to try to get it all clear: do you have a page number in The Ruby
Way for the example you mentioned?