85

これは簡単なことだと思います。次の例で、定数が既に定義されているかどうかを確認するにはどうすればよいですか?

#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)
4

3 に答える 3

144
CONST = 2 unless defined? CONST

素晴らしいオペレーターの詳細については、こちらを参照してください。defined?

PSそして将来的には、var ||= 1代わりにvar = var||1.

于 2012-04-16T10:01:27.030 に答える
27

const_defined? API

pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false
于 2015-08-03T08:39:01.967 に答える
4
CONST ||= :default_value

上記はRuby 1.9.3で機能しますが、1.8では失敗します...まあ、1.8は今では古くなっています。

于 2015-05-01T13:08:34.293 に答える