Comments 11
Благодаря таким статьям, от руби теряется немного волшебства :) Впрочем, это прекрасно!
+4
В прошлом топике на эту тему упоминались скринкасты «Ruby Metaprogramming» с Дейвом Томасом. Скачал, доволен как слон. Но тем не менее с удовольствием прочел статью. Пусть оно в мозгу укладывается, а моск постепенно пусть всё это осознает.
+2
Это норм.
Самое смешное, ни прошлые комменты, ни эта статья не ответили на мой вопрос, но все равно плюсую.
Ответ был гораздо проще:
Неявно класс переопределяет для себя оператор <<. Увы, даже беглый просмотр Rubinius в своё время этого мне не дал.
Но статья ОК.
Самое смешное, ни прошлые комменты, ни эта статья не ответили на мой вопрос, но все равно плюсую.
Ответ был гораздо проще:
Неявно класс переопределяет для себя оператор <<. Увы, даже беглый просмотр Rubinius в своё время этого мне не дал.
Но статья ОК.
0
Начиная с 1.9.2, eigenclass объекта можно достать посредством
Диаграммы замечательные, спасибо.
Object#singleton_class
.Диаграммы замечательные, спасибо.
+3
bugs.ruby-lang.org/issues/1082 как это было
+1
Значит в книге «Язык программирования Ruby» (Ruby-Programming-Language) Флэнагана и Матцумото только приоткрыли дверь в eigenclass (там их называют обособленные классы), описав их в общем хранилищем синглтон-методов. Вот как надо смотреть в микроскоп на структуру рубина.
Большое спасибо за статью, с нетерпением жду продолжения с такой же доступной и красивой инфографикой.
Большое спасибо за статью, с нетерпением жду продолжения с такой же доступной и красивой инфографикой.
+1
Возникло пару вопросов (в руби не так давно):
— Если методы класса размещаются в его метаклассе, что тогда остается в самом классе?
— Есть ли метакласс в Object?
— Для метаклассов, которые вы получили методом snoopy.metaclass, нельзя определить методы, так же? Иначе по логике они должны попасть в метакласс метакласса?
— Если методы класса размещаются в его метаклассе, что тогда остается в самом классе?
— Есть ли метакласс в Object?
— Для метаклассов, которые вы получили методом snoopy.metaclass, нельзя определить методы, так же? Иначе по логике они должны попасть в метакласс метакласса?
0
- в самом классе остаются методы его экземпляров, например;
- есть;
Object.singleton_class => #<Class:Object>
- вроде бы ограничений на создание метакласса метакласса никаких нету, но что куда при этом пойдет — надо смотреть в irb.
+1
по третьему пункту — вы правы, у метакласса есть свой мтекласс и вы можете определять методы для него
но, как писал Паоло Перротта по этому поводу: «Если вы найдете этому практическое применение, дайте миру знать об этом»
но, как писал Паоло Перротта по этому поводу: «Если вы найдете этому практическое применение, дайте миру знать об этом»
0
Sign up to leave a comment.
Вникаем в метаклассы Ruby