2015-04-28 2 views
1

Таким образом, я могу иметь что-то вроде этого ():Ruby: модуль А против класса A :: B

module A 
    class B 
    end 
end 

, а также я могу это (B):

class A::B 
end 

Зачем использовать A вместо B и наоборот?

+1

Первое предпочтительнее, поскольку последнее вызывает исключение: 'NameError: неинициализированная константа A'. :-) Если, однако, вы пишете 'module A; end' перед классом A :: B', я не верю, что есть разница. Обычный метод, будучи более компактным и, возможно, более ясным, обычно используется. Конечно, если вы хотите создавать модули и классы «на лету», все ставки отключены. –

+0

@CarySwoveland, почему я хотел бы использовать форму класса A :: B? – user1463822

ответ

1

Когда вы определяете A::B в первый раз, вам нужно сделать первый вариант. В противном случае Второй вариант сохраняет отступы и более компактен, что полезно, когда вы хотите что-то написать A::B в сжатом и независимом от других вещах в A.

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