From: Michael Fellinger Date: 2008-05-20T09:07:17+09:00 Subject: Re: Using a @@class_variable into a Module On Mon, May 19, 2008 at 8:02 PM, Iñaki Baz Castillo wrote: > Hi, I want to declare a @@class_variable in class A. > Class A includes a Module M and I want some methods in M using the > @@class_variable but I get some problem: > > ------------------- > module M > def kk > #puts (eval %{ #{send('class').class_variables[0]} }) > puts @@class_var > end > end > > class A > include M > @@class_var = "kaka1" > end > > a = A.new > a.kk > NameError: uninitialized class variable @@class_var in M > from ./class_attr1.rb:4:in `kk' > ------------------- > > > I understand the problem. Because the nature of class variables when > the Module M uses @@ it looks into a class variable defined in same > class/module. > > Is there any way I could use a class A @class_var into a included M > module methods? If not then I'll use a normal attribute but I don't > like it since it's a constant value that could perfectly be a class > variable instead of initialiting it in each A instance creation. So why not making it a constant? Try to stay away from class variables, they are evil. > Thanks a lot. > > > -- > Iñaki Baz Castillo > >