반응형
루비의 정적 변수
방금 PHP의 정적 변수에 대해 배웠습니다. 루비에 그런 게 있나요?
예를 들어, Student
클래스 를 생성하고 생성 한 각 student
객체 에 대해 해당 ID 번호가 자동으로 증가해야합니다.
나는 정적 변수로 클래스 변수를 만들 것이라고 생각했습니다.
클래스 변수는 모든 인스턴스간에 공유되므로 (클래스 변수라고하는 이유) 원하는 작업을 수행합니다. 그들은 또한 때때로 다소 혼란스러운 행동으로 이끄는 유전이지만 여기서 문제가 될 것이라고 생각하지 않습니다. 다음은 클래스 변수를 사용하여 생성 된 인스턴스 수를 계산하는 클래스의 예입니다.
class Foo
@@foos = 0
def initialize
@@foos += 1
end
def self.number_of_foos
@@foos
end
end
Foo.new
Foo.new
Foo.number_of_foos #=> 2
받아 들여진 대답을 정적 변수의 정의로 사용하는 것은 위험 할 수 있으며 많은 Ruby 코드에서 보았던 일반적인 오류입니다.
같은 @@foos
것은 모든 하위 클래스에서 공유 됩니다. 그러나 대부분의 프로그래머는 정적 변수 가 정의 된 클래스 내 에서만 범위를 가질 것으로 예상 합니다.
대부분의 언어의 의미에서 정적 변수를 찾고 있다면 범위가 자체 클래스 인 경우이 SO 답변을 참조하십시오.
또한이 블로그 게시물에는 대부분의 프로그래머가 얻을 수있는 놀라움의 좋은 예가 있습니다.
http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/
참고 URL : https://stackoverflow.com/questions/2416372/static-variables-in-ruby
반응형
'program tip' 카테고리의 다른 글
Vim에서 Ex 명령을 (재) 매핑 할 수 있습니까? (0) | 2020.11.08 |
---|---|
대화 상자 / AlertDialogs : 대화 상자가 켜져있는 동안 "실행 차단"방법 (.NET 스타일) (0) | 2020.11.08 |
필터를 통해 STDERR 만 파이프 (0) | 2020.11.08 |
<<의 용도는 무엇입니까? (0) | 2020.11.08 |
Model에서 self를 언제 사용해야합니까? (0) | 2020.11.08 |