В приложении нет разницы.В принципе, разница невелика, но в первом случае вы работаете в текущем контексте и определяете метод для другого экземпляра класса (на самом деле, метод экземпляра в его собственном классе), тогда как во втором случае вы вводитеконтекст метакласса ("Eigenclass") другого экземпляра класса, а затем определение метода экземпляра.
Редактировать:
Я должен добавить, что причины выбора class << self
внекоторые случаи ...
- Более чистый синтаксис при определении более чем нескольких методов класса.
- Вы можете выполнять другие виды кода в контексте Eigenclass, кроме просто
def my_method ...
.Вы можете, например, сказать attr_accessor :some_attribute
в этом блоке кода.