Глобальная переменная переопределена - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть веб-приложение с двумя контроллерами abc_controller.rb и xyz_controller.rb.Оба имеют одну и ту же переменную с различным содержимым:

$pqrs = ["1", "2"] // in one controller, abc
$pqrs = ["3", "4"] // in another controller, xyz

Я открываю веб-страницу с abc в url, которая вызывает abc_controller.rb.Когда я печатаю значение $pqrs внутри abc_controller, он выводит ["3", "4"] вместо ["1", "2"].

Любая идея, что может быть причиной этого?

1 Ответ

0 голосов
/ 13 февраля 2019

То, что вы используете, является глобальной переменной.Глобальная переменная начинается с $ и доступна во всем приложении.Если вы измените переменную в любом месте вашего приложения, она будет изменена везде.В зависимости от того, что вы пытаетесь сделать, вы можете использовать переменную класса (все еще не большую, но лучше, чем глобальную переменную), используя @@, или переменную экземпляра класса, используя @.

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

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

Подробнее о переменных класса и переменных экземпляра класса можно прочитать здесь: ClassПеременные и переменные экземпляра класса

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