если у вас есть что-то вроде:
module Real
A = 1
end
, когда вы делаете defined?(Real::A)
, вы получаете «константу», которая является истинным значением.Теперь, если я сделаю что-то вроде:
module Virtual
def self.constants
[:A] + super
end
def self.const_missing(sym)
return 1 if sym == :A
super
end
def self.const_defined?(sym)
return true if sym == :A
super
end
end
defined?(Virtual::A)
вернуть ноль.Есть ли какой-нибудь способ перезаписать определенные?поведение для принятия метапрограммированных констант на учет?