What does "@@" mean?

In a ruby class, what does a variable “@@name” mean? Does it mean static
variable? Does its subclass have access to this field?

Hi –

On Sun, 18 Jan 2009, Zhao Yi wrote:

In a ruby class, what does a variable “@@name” mean? Does it mean static
variable? Does its subclass have access to this field?

It’s a class variable, which is actually a class-hierarchy variable
(shared between a class and its descendants), and also visible to all
the instances of all of those classes.

In other words, it’s a kind of class-hierarchy-scoped global. Think of
it as $$name :slight_smile:

David


David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Coming in 2009: The Well-Grounded Rubyist (The Well-Grounded Rubyist)

http://www.wishsight.com => Independent, social wishlist management!

David A. Black wrote:

It’s a class variable, which is actually a class-hierarchy variable
(shared between a class and its descendants), and also visible to all
the instances of all of those classes.

In other words, it’s a kind of class-hierarchy-scoped global. Think of
it as $$name :slight_smile:

David

Ok thanks. That’s why I always got error when access to this variable
outside of the class-hierarchy.

On 18.01.2009 14:07, Zhao Yi wrote:

David A. Black wrote:

It’s a class variable, which is actually a class-hierarchy variable
(shared between a class and its descendants), and also visible to all
the instances of all of those classes.

In other words, it’s a kind of class-hierarchy-scoped global. Think of
it as $$name :slight_smile:

Ok thanks. That’s why I always got error when access to this variable
outside of the class-hierarchy.

Actually I would recommend against using this beast. There are some
subtle issues with regard to definition order. Better use an instance
variable of the class instance.

Kind regards

robert

On Sun, Jan 18, 2009 at 11:28 AM, Robert K.
[email protected] wrote:

Actually I would recommend against using this beast. There are some subtle
issues with regard to definition order. Better use an instance variable of
the class instance.

‘Beast’ was a fun name for them. :slight_smile:
You can use like it like this:

Regards!

On Sun, 18 Jan 2009 07:33:29 -0500, Zhao Yi wrote:

In a ruby class, what does a variable “@@name” mean? Does it mean static
variable? Does its subclass have access to this field?

“static variable” means different things in different contexts in C and
Java, but @@variables are roughly equivalent to those defined by
following Java code:

public class Foo{
private static int bar=0;
}