Я думал, что не было различий между методами, объявленными в блоке class << self
, и теми, которые были объявлены с префиксом self.
, но есть:
module A
VAR = 'some_constant'
end
class B
extend A
class << self
def m1
puts VAR
end
end
def self.m2
puts VAR
end
end
B.m1 # => OK
B.m2 # => uninitialized constant B::VAR
Почему константы A
доступны в m1
, но не в m2
?