[루비 사용자 가이드] 인스턴스 변수

루비/레일스 프로그래밍/루비 사용자 가이드 2009.02.05 23:05

인스턴스 변수는 @로 시작하는 이름을 가지며, 변수 영역은 self가 가리키는 객체 내부로 제한됩니다. 두 개의 다른 객체가, 같은 클래스에 속한다고 할지라도, 인스턴스 변수에 다른 값을 가질 수 있습니다. 객체 밖에서는 프로그래머가 명시적으로 억세스를 위한 메소드를 지정하지 않는 한, 인스턴스 변수의 값을 변경하는 것은 물론, 값을 관찰하는 것도 불가능합니다(즉, 루비의 인스턴스 변수들은 결코 공용(public)이 아닙니다). 전역변수와 마찬가지로 초기화 하지 않은 인스턴스 변수의 값도 nil입니다.

인스턴스 변수는 선언될 필요가 없습니다. 이로 인해 유연한 객체 구조가 가능합니다. 각각의 인스턴스 변수는 가장 처음 값이 대입될 때 동적으로 객체에 추가됩니다.

ruby> class InstTest
    |   def set_foo(n)
    |     @foo = n
    |   end
    |   def set_bar(n)
    |     @bar = n
    |   end
    | end
   nil
ruby> i = InstTest.new
   #<InstTest:0x83678>
ruby> i.set_foo(2)
   2
ruby> i
   #<InstTest:0x83678 @foo=2>
ruby> i.set_bar(4)
   4
ruby> i
   #<InstTest:0x83678 @foo=2, @bar=4>

위 코드에서 객체 iset_bar 메소드가 호출되기 전까지  @bar의 값을 보여주지 않고 있음에 유의하십시오.

Trackbacks 1 : Comments 0