Есть ли такая вещь, как постоянная переменная экземпляра в Ruby? - PullRequest
6 голосов
/ 03 августа 2010

Мой googlefu отстой и не смог найти информацию по этому вопросу.

По сути, я хочу иметь переменную экземпляра, которая видна только в области видимости класса / модуля, но также является неизменяемой.

Я новичок в Ruby и прошу прощения, если этот вопрос не имеет особого смысла.

Ответы [ 3 ]

3 голосов
/ 03 августа 2010
class MyClass
  def initialize
    class << self
      FOO=1
    end
  end
  def foo
    class << self
      FOO
    end
  end
end

Естественно, вы захотите использовать метод foo везде, где возможно, чтобы прочитать значение.

Более простой эквивалент будет

class MyClass
  def initialize
    def foo; 1; end
  end
end
1 голос
/ 03 августа 2010

Константы Ruby не очень постоянны: они не являются неизменяемыми, и вы можете назначить им другое значение, и все, что вы получите, это предупреждение. Смотрите вопрос Ошибка константы в Ruby?

0 голосов
/ 13 апреля 2012

Я написал драгоценный камень для этого случая. http://rubygems.org/gems/instancevalue

(Приближается к Кену).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...