Что делает этот метод метакласса? - PullRequest
4 голосов
/ 29 апреля 2011
def metaclass; class << self; self; end; end

Может кто-нибудь расшифровать эту строку для меня. Я предполагаю, что факт, что это сжато в одно, не очень помогает также. Но, начав смотреть на рубин только 2 дня назад, я боюсь, что могу неправильно его разорвать.

1 Ответ

7 голосов
/ 29 апреля 2011

Разбивая его на части:

def metaclass
  class << self
    self
  end
end

Обратите внимание, что это доступно как встроенный метод в Ruby 1.9.2 (Object#singleton_class).

То, что это делает, возвращает singleton_class / metaclass / eigenclass объекта, открывая его через class << self и затем возвращая его (self). Если вы не уверены в метаклассах как таковых, я бы порекомендовал следующую статью:

Модель объектов Ruby - структура и семантика

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