Я хочу определить переменную класса в одноэлементном классе. Я проверил результат этой программы:Как определить переменную класса в одноэлементном классе
class C
class << self
@@val = 100
end
end
C.singleton_class.class_variables #=> [], I expect [:@@val]
C.class_variables #=> [:@@val]
Я ожидаю, что объем @@val
быть синглтон класс, не так ли?
Не могли бы вы рассказать мне, как определить переменную класса в одноэлементном классе, используя class << self
, и почему эта программа неверна?
спасибо. не могли бы вы рассказать мне, почему выше программа не верна ?. что область действия является одноэлементным классом, не так ли? –
Чем больше я думаю об этом, тем больше я убежден, что это глюк рубинового парсера. Сфера действия - 'C.singleton_class', да. Даже «класс С; класс << self; класс << self; @@ ccv = 42; конец ; конец ; end' приводит к установке переменной класса на 'C'. Вероятно, это то, как обрабатываются '@' и '@@'. Он отвечает открытому классу, несмотря на то, появляется ли он внутри метода класса, метода экземпляра или любого объявления. – mudasobwa
@CarySwoveland У меня есть это специально. – mudasobwa