Ruby имеет 5 переменных областей:
- Локальные переменные: это обычные переменные, пример
x = 25
,y = gaurish
, гдеx
иy
являются локальными переменными. - Экземпляры экземпляра: они обозначаются символом
@
infront фактического имени переменной. в основном используется с классами, так что каждый экземпляр/объект класса имеет другое/отдельное значение. пример.@employee.name = 'Alex'
- Переменные класса: обозначаются символами
@@
перед именем переменной. class variable, я думаю, что имеет одинаковое значение для всех экземпляров/объектов. - Глобальные переменные: они начинаются с символа
$
и доступны везде. пример$LOAD_PATH
- Константы. Должно начинаться с буквы "Столица", но по соглашению, написанному в
ALL_CAPS
. хотя он постоянный, но его значение его не является постоянным и может быть изменено (хотя Ruby будет предупреждать об этом). поэтому в этом смысле это также действует как переменная.
Как вы можете заметить, все вышеперечисленное представляет собой переменные, которые сохраняют некоторое значение какого-либо типа, и их значение может быть изменено. Но каждая область делает что-то немного другое. Имея 5 разных типов переменных областей, я сбиваю с ума ад. В основном, я затрудняюсь решить, в каком случае, я должен использовать конкретный объем в моем коде. поэтому у меня есть некоторые вопросы в моем сознании. ответьте:
- Я заметил, что локальные переменные и переменные класса остаются одинаковыми для всех объектов/экземпляров, в отличие от переменных экземпляра. так какая разница между локальными переменными и переменными класса?
- Можно ли вместо переменных класса использовать локальные переменные? или наоборот. И если да, то почему, а если нет, то почему бы и нет?
- Глобальные переменные в рубине напоминают мне злые переменные
global $x
в PHP. Глобальные переменные в рубине также считаются злыми и поэтому не должны использоваться. OR, существуют конкретные случаи, когда имеет смысл использовать глобальные переменные в ruby? - Почему константы не являются константами и позволяют изменять их значение? Постоянное значение по определению должно быть постоянным? иначе мы можем просто использовать другую переменную и не изменять ее значение. это будет эквивалентно CONSTANT в рубине?
- Любая страница/ресурс/ссылка, которая объясняет разницу между 5 различными областями переменных в рубине? Мне нравится держать его под рукой.
- В этом случае я должен использовать конкретный диапазон переменных в своем коде. поэтому можно было бы объяснить все 5 случаев, например, это было бы здорово, это моя основная причина путаницы.
- Есть ли де-факто выбор, например
public
в java? Какой будет безопасная ставка в большинстве случаев использования?
Спасибо, что нашли время, чтобы прочитать и ответить на вопрос