[루비 사용자 가이드] 클래스 상수

루비/레일스 프로그래밍/루비 사용자 가이드 2009.02.06 10:40

상수는 대문자로 이름이 시작합니다. 상수에는 최대 한 번만 값을 대입해야만 합니다. 현재의 루비 구현에서 상수에 두번 이상 대입하면 에러가 발생하지 않고 경고 메시지가 표시됩니다.

ruby>fluid=30
   30
ruby>fluid=31
   31
ruby>Solid=32
   32
ruby>Solid=33
   (eval):1: warning: already initialized constant Solid
   33

상수는 클래스 내부에서 정의될 수도 있습니다. 이 경우 인스턴스 변수와 달리 클래스 밖에서도 억세스 할 수 있습니다.

ruby> class ConstClass
    |   C1=101
    |   C2=102
    |   C3=103
    |   def show
    |     puts "#{C1} #{C2} #{C3}"
    |   end
    | end
   nil
ruby> C1
ERR: (eval):1: uninitialized constant C1
ruby> ConstClass::C1
   101
ruby> ConstClass.new.show
101 102 103
   nil

상수는 모듈 안에서 정의될 수도 있습니다.

ruby> module ConstModule
    |   C1=101
    |   C2=102
    |   C3=103
    |   def showConstants
    |     puts "#{C1} #{C2} #{C3}"
    |   end
    | end
   nil
ruby> C1
ERR: (eval):1: uninitialized constant C1
ruby> include ConstModule
   Object
ruby> C1
   101
ruby> showConstants
101 102 103
   nil
ruby> C1=99  # not really a good idea
   99
ruby> C1
   99
ruby> ConstModule::C1
   101
ruby> ConstModule::C1=99   # .. this was not allowed in earlier versions
   (eval):1: warning: already initialized constant C1
   99
ruby> ConstModule::C1  # "enough rope to shoot yourself in the foot"
   99
신고
Trackbacks 10 : Comment 0

티스토리 툴바