2012-06-02 2 views
0

Я пытаюсь понять кусок кода с несколькими модулямиRuby: Multiple декларация модуль

module a; module b; module c; 

def foo 
    #something 
end 

end 
end 
end 

Так что же делает этот код означает? Как все 3 модуля имеют foo, и я могу получить доступ к a.foo или b.foo и т. Д.?

+0

Где именно вы нашли этот код? –

+2

'SyntaxError: имя класса/модуля должно быть CONSTANT' –

+1

, пожалуйста, отделите свой код и следуйте любым рубиновым модулям, учебникам по классам. –

ответ

1

Я вижу, как это будет сбивать с толку. Это очень плохо выложено. Разделите объявления модулей на отдельные строки, и это имеет смысл. Ruby позволяет некоторым частям разделять точки с запятой, если они написаны на одной строке ... здесь злоупотребляют и просто приводят к путанице.

код расширяется до этого, когда правильно выложили:

module a 
    module b 
    module c 
     def foo 
     #something 
     end 
    end 
    end 
end 

Другие примеры с запятой, чтобы написать определение на одной линии включают в себя:

class Foo < Bar; def zip; if @terrifying; puts "Yes"; else; puts "No"; end; end; end 

Вы можете, вероятно, почему Я говорю, что это плохо написано. Кроме того, имена модулей должны начинаться с буквы верхнего уровня.

+0

Спасибо, я думаю, что лучше сделать код с отступом, а не один лайнер (для новичка). – Pradhan

Смежные вопросы