Mam nadzieję, że jest to proste. Jak sprawdzić w poniższym przykładzie, czy stała jest już zdefiniowana?
#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_defined?
ale to nie działa dla mnie; nie pewny dlaczego.const_defined?
jest metodąModule
klasy i powie ci, czy stała jest zdefiniowana w tym module i jego przodkach (opcjonalnie). Sprawdź dokumentację, aby zobaczyć kilka przykładów - ruby-doc.org/core-1.9.3/Module.html#method-i-const_defined-3Fconst_defined? API
pry> User.const_defined?("PER_PAGE") => true pry> User.const_defined?("PER_PAGE123") => false
źródło
CONST ||= :default_value
powyższe działa u mnie na ruby 1.9.3, ale nie działa na 1.8 ... cóż, 1.8 jest teraz starożytny.
źródło