tags:

views:

50

answers:

2

My googlefu sucks and was unable to find information on this.

Basically I want to have a instance variable that is visible only within the scope of a class/module but is also immutable.

I am new to Ruby and apologize if this question doesn't make much sense.

A: 
class MyClass
  def initialize
    class << self
      FOO=1
    end
  end
  def foo
    class << self
      FOO
    end
  end
end

Naturally, you'll want to use the method foo wherever possible to read the value.

A simpler equivalent would be

class MyClass
  def initialize
    def foo; 1; end
  end
end
Ken Bloom
Of course, constants aren't constant anyway in Ruby.
Jörg W Mittag
+1  A: 

Ruby constants aren't very constant: they're not immutable, and you can assign another value to them and all you get is a warning. See the question Constant Assigment Bug in Ruby?

Andrew Grimm