Mike Steiner wrote: > What's the difference between @ and @@? Specifically, which should I use > if > I need a global variable in a non-OOP Ruby program? > > Thanks! > > Mike Steiner @ = Instance variable @@ = Class variable If you need a global variable in a non-OOP program, I guess I'd suggest using a constant (capitalized variable). Here's an example of @ and @@ usage: irb(main):001:0> class Foo irb(main):002:1> attr_accessor :a irb(main):003:1> @@b = 0 irb(main):004:1> def initialize irb(main):005:2> @a = 0 irb(main):006:2> end irb(main):007:1> def add_a irb(main):008:2> @a += 1 irb(main):009:2> end irb(main):010:1> def add_b irb(main):011:2> @@b += 1 irb(main):012:2> end irb(main):013:1> def b irb(main):014:2> @@b irb(main):015:2> end irb(main):016:1> end => nil irb(main):017:0> one_foo = Foo.new => #<Foo:0x28dc078 @a=0> irb(main):018:0> two_foo = Foo.new => #<Foo:0x28d9ea4 @a=0> irb(main):019:0> one_foo.add_a => 1 irb(main):020:0> one_foo.a => 1 irb(main):021:0> two_foo.a => 0 irb(main):022:0> one_foo.add_b => 1 irb(main):023:0> one_foo.b => 1 irb(main):024:0> two_foo.b => 1 -- Posted via http://www.ruby-forum.com/.