модуль модуль класс против модуля модуль :: класс в Ruby - PullRequest
1 голос
/ 30 сентября 2011

В чем разница между

module MyModule
  module MySubModule
    class MySubModuleClass
      ...
    end
  end
end

и

module MyModule
  class MySubModule::MySubModuleClass
    ...
  end
end

в рубине?

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

второй случай не будет работать, если «MySubModule» уже не определен в другом месте ...

второй случай не является правильным определением «MySubModule» и приведет к ошибке, если вы не определили этоMySubModule в другом месте

NameError: uninitialized constant MyModule::MySubModule
    from (irb):2:in `<module:MyModule>'
1 голос
/ 30 сентября 2011

Во втором примере вы определяете class, в первом - module, и вы не можете использовать синтаксис MySubModule::MySubModuleClass, если MySubModule не существует. Так что вы должны определить это раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...