2011-02-08 7 views
3

Я никогда не видел глобальных переменных, используемых в любом коде Ruby. Я понимаю, что их использование нахмурилось на разных языках, но они кажутся фактически бесполезным в Ruby. Может ли кто-нибудь указать на правильно разработанный код, который их использует?Рубиновые глобальные переменные, законные использования

Если я прав, и они избыточные/исторические, почему они сохраняются в 1.9?

Чтобы быть ясным, я не имею в виду переменные, которые Ruby настраивает для вас, как $" и $stdin. Я имею в виду использование в своем собственном коде.

ответ

2

Единственный раз, когда я вижу его в приличном коде, для журнала.

$log = Logger.new('foo.log', 'daily') 

Постоянный, вероятно, будет хорошо, но он как-то чувствует странные методы вызова на константе.

+0

«методы класса» - пример методов вызова для константы. –

+0

Я полагаю, что Rails-эквивалент вашего $ log - это Rails.logger, cattr_accessor. Я полагаю, что они функционально эквивалентны глобальным переменным, поэтому они не так уж необычны в конце концов! – noodl

1

Переменные окружения обычно являются глобальными переменными в Ruby. Так что CLASSPATH в jruby и так далее ...

Кроме того, вы можете реализовать дешевые синглтоны с использованием глобальных переменных (хотя это нецелесообразно).

Итак, глобальные переменные определенно имеют место в Ruby.

+1

+1 Глобальные переменные имеют, хотя и ограниченный и редкий, использование на любом языке. – Krule

+0

Это интересный момент о создании синглетонов или, скорее, объектов, которые нужно инициализировать не более одного раза в жизни программы. На них обычно ссылаются через SomeConstant, а не на '$ some_global_variable'. – noodl

Смежные вопросы