2011-02-08 5 views
3

Ruby 코드에서 전역 변수를 사용하는 것을 본 적이 없습니다. 나는 그들의 사용법이 여러 언어에 대해 눈살을 찌푸 리기는하지만 실제로는 루비에 쓸모없는으로 보입니다. 누구든지 그들을 사용하는 제대로 설계된 코드를 가리킬 수 있습니까?Ruby 전역 변수, 합법적 인 사용

내가 옳고 중복/역사적이라면 왜 1.9에서 지속됩니까?

분명히 말해서, 나는 Ruby가 당신을 위해 설정 한 변수가 $"$stdin 인 것을 의미하지 않습니다. 내 자신의 코드에서 사용하는 것을 의미합니다.

답변

2

괜찮은 코드에서 볼 수있는 유일한 시간은 로그입니다.

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

상수는 아마 괜찮지 만 상수에 대한 이상한 호출 방법을 느낍니다.

+0

"클래스 메서드"는 상수에 메서드를 호출하는 예제입니다. –

+0

$ logs에 해당하는 Rails가 Rails.logger, cattr_accessor라고 가정합니다. 나는 그들이 글로벌 변수와 기능적으로 동등하다고 생각하기 때문에 결국 그렇게 특별하지 않습니다! – noodl

1

환경 변수는 일반적으로 Ruby의 전역 변수입니다. 그래서 CLASSPATH는 jruby에 있습니다.

또한 글로벌 변수를 사용하여 값싼 싱글 톤을 구현할 수 있습니다 (권장하지는 않지만).

그래서 전역 변수에는 분명히 Ruby가 있습니다.

+1

+1 전역 변수는 제한적이며 드물지만 모든 언어로 사용됩니다. – Krule

+0

싱글 톤 또는 오히려 프로그램 라이브에서 한 번만 초기화해야하는 객체를 만드는 것이 흥미로운 점입니다. 그것들은 전형적으로'$ some_global_variable'보다는 SomeConstant를 통해 참조 될 것입니다. – noodl