Ruby - переменные класса перезаписываются при последовательных чтениях - PullRequest
0 голосов
/ 22 декабря 2010

У меня есть такой класс:

class MyNumber
  @@number = nil

  unless @@number
    @@number = rand(10)
  end

  def number
    @@number
  end
end

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

На языке Java я пытаюсь использовать статическую переменную и статический метод для этого класса.

Ответы [ 3 ]

1 голос
/ 22 декабря 2010

Это должно работать, но как вы называете класс - если класс будет перезагружен, он будет иметь другое значение.

0 голосов
/ 22 декабря 2010

Я думаю, что это может быть лучше написано так:

class MyNumber
  def number
    @@number ||= rand(10)
  end
end
0 голосов
/ 22 декабря 2010

Это было вызвано автоматической разгрузкой / перегрузкой рельсов. Существует обходной путь, который позволяет классу сохраняться при выполнении запросов.

В моем окружении. Rb я должен был добавить это

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