[ruby] 상수가 이미 정의되어 있는지 확인

이것은 간단한 것입니다. 다음 예에서 상수가 이미 정의되어 있는지 어떻게 확인합니까?

#this works
var = var||1
puts var
var = var||2
puts var

#this doesn't
CONST = CONST||1
puts CONST
CONST = CONST||2
puts CONST

=> 1
   1
   uninitialized constant CONST (NameError)



답변

CONST = 2 unless defined? CONST

멋진 연산자에 대한 자세한 내용은 여기 를 참조 하세요defined? .

PS 그리고 미래에 당신이 원하는 것 같아요 var ||= 1대신 var = var||1.


답변

const_defined? API

pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false


답변

CONST ||= :default_value

위의 내용은 루비 1.9.3에서는 작동하지만 1.8에서는 실패합니다. 이제 1.8은 오래되었습니다.


답변