Ne sont-ils pas censés faire la même chose? Pourquoi cela arrive-t-il? À ce stade, j'utilise le module_eval dans mon code par nécessité, mais le const_set semble plus lisible. Peu importe, j'aimerais vraiment comprendre pourquoi cela arrive.Différence entre le module # const_set et le module # module_eval
est ici le code:
class A
def foo
FOO
end
def self.foo
FOO
end
end
module B
class C < A
end
end
B.const_set(:FOO,'asdf')
>> B::C.foo
NameError: uninitialized constant A::FOO
from ./foo.rb:6:in `foo'
from (irb):1
>> B.module_eval {FOO='asdf'}
=> "asdf"
>> B::C.foo
=> "asdf"
Ne pas oublier de reconnaître que quelqu'un a répondu à votre question; sélectionnez la réponse – Tom