Рассмотрим следующую (правильную) программу на Ruby:
class Outer
Inner = Struct.new(:dummy) do
CONST = 'abce'
def fun
puts(dummy)
end
end
end
obj = Outer::Inner.new(15)
obj.fun
puts(Outer::CONST)
Почему я должен писать Outer::CONST
вместо Outer::Inner::CONST
?
Мое понимание блока, переданного в Struct::new
, заключалось в том, что self
связан с Outer::Inner
, и действительно, мы можем видеть, что метод (fun
) присоединен к классу Inner;но CONST
явно нет.