program tip

루비의 정적 변수

radiobox 2020. 11. 8. 09:44
반응형

루비의 정적 변수


방금 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

반응형