Описание тега eigenclass

In Ruby, an Eigenclass, also called a Singleton Class, is where methods defined on a specific object are actually stored. In the inheritance chain, it sits between an object and its class.
1 ответ

ActiveSupport:: Обратные вызовы для методов класса

Можно ли использовать ActiveSupport::Callbacks на методы класса? Более конкретно, в модуле ниже, куда бы вы положили include ActiveSupport::Callbacks делать define_callbacks а также run_callbacks поделитесь тем же состоянием? module Handler extend A…
1 ответ

Ruby ищет переменную класса в объекте вместо определенного класса

Эта часть работает: class Example1 @@var1= "var1 in the Example1" def get_var1 @@var1 end end example1 = Example1.new example1.get_var1 # => "var1 in the Example1" но если я попробую eigenclass: def example1.get_var1 @@var1 end example1.get_var1 …
01 июл '14 в 12:59
1 ответ

Рубиновый собственный класс (класс сиглета) создан? Для которого?

Запутался в метапрограммировании Ruby. Итак, из урока я узнал следующее: cat = "kitty" cat.upcase # "KITTY" cat.poop # undefined 'poop' def cat.poop puts 'pooooooo...' end cat.upcase # "KITTY" cat.poop # "pooooooo..." Таким образом, это означает, чт…
13 июл '14 в 05:31
4 ответа

Методы класса Ruby против методов в собственных классах

Являются ли методы и методы класса в собственном классе (или метаклассе) этого класса всего лишь двумя способами определить одну вещь? Иначе каковы различия? class X # class method def self.a "a" end # eigenclass method class << self def b "b"…
18 ноя '10 в 16:18
6 ответов

Класс << Собственная идиома в Ruby

Что значит class &lt;&lt; self делать в рубине?
24 мар '10 в 03:02
2 ответа

Неявный контекст и собственные классы

Недавно я нашел интересную статью о неявных контекстах в Ruby, и мне показалось, что этот опыт довольно открывающий. Я понял, что в Ruby есть ссылка не только на self (получатель метода по умолчанию), но также к текущему классу (также известному как…
04 ноя '12 в 12:58
2 ответа

Рубин, когда собственные классы появляются

Существуют ли собственные классы до определения одноэлементного метода в объекте или классе. т.е. всегда ли они существуют или появляются, когда определен одноэлементный метод или метод класса?
18 авг '13 в 02:01
2 ответа

Вызов метода класса собственного класса

Мне нужно переопределить метод класса для некоторых экземпляров класса class Foo def eigen_class class &lt;&lt; self self end end def self.foo "original foo" end def override_foo class &lt;&lt; self def self.foo "overridden foo" end end end end foo …
19 ноя '12 в 15:27
3 ответа

Почему собственный класс не эквивалентен self.class, когда он выглядит так похоже?

Я где-то пропустил записку, и я надеюсь, что вы мне это объясните. Почему собственный класс объекта отличается от self.class? class Foo def initialize(symbol) eigenclass = class &lt;&lt; self self end eigenclass.class_eval do attr_accessor symbol en…
27 окт '09 в 13:31
1 ответ

Ruby 1.8 против 1.9: определение того, является ли синглтон-класс Ruby подклассом другого класса

Как уже упоминалось в ответе на предыдущий вопрос, B &lt; A это самый простой способ определить, является ли класс подклассом другого. Однако, это, кажется, терпит неудачу в Ruby 1.8 (также REE 1.8), когда B является одноэлементным классом (т. е. со…
06 мар '13 в 23:33
1 ответ

Как создать метод, который выполняет ранее заданный блок в Ruby?

У меня есть класс, который был построен для создания подклассов. class A def initialize(name) end def some # to define in subclass end end # usage p A.new('foo').some #=&gt; nil В моем случае я не хочу создавать подкласс, так как мне нужен только од…
26 сен '17 в 09:52
1 ответ

Синглтон-класс синглтон-класса BasicObject в Ruby

Это в основном "академический", но здесь это идет: Согласно этой диаграмме собственного класса Ruby (слегка отредактировано): BasicObject.singleton_class.singleton_class.superclass является Class, Однако, запустив это на интерпретаторе Ruby (Ruby v2…
02 июл '18 в 08:57
1 ответ

Наличие одиночного модуля, расширяющего класс

У меня есть одно приложение в моем приложении, которое повторно используется в разных приложениях. Я хочу, чтобы этот синглтон получал некоторые методы по умолчанию из моего класса, но также и имел возможность настраивать модуль / собственный класс.…
02 сен '14 в 23:42
1 ответ

Как найти частные синглтон методы

Я определил модуль Vehicle как такой module Vehicle class &lt;&lt;self def build end private def background end end end Вызов Vehicle.singleton_methods возвращается [:build], Как я могу проверить все частные одноэлементные методы, определенные Vehic…
27 авг '12 в 02:51
2 ответа

Метапрограммирование. Где происходит диспетчеризация метода, когда мы вызываем метод экземпляра, определенный в методе класса?

Я читаю метапрограммирование Ruby и просто хочу кое-что прояснить в следующем перефразированном коде: class MyClazz def self.my_class_method(name) define_method(name) { # do stuff } end my_class_method :foo my_class_method :bar end # The code above …
24 мар '12 в 04:47
2 ответа

Почему одноэлементный метод модуля не виден в нижестоящих собственных классах, где он смешивается?

Я понимаю обычный путь поиска метода, т.е. class, superclass/module, all the way up to BasicObject, Я думал, что это верно и для одноэлементной версии цепочки, но не похоже, что вы смешиваете модуль в мета-цепочке. Буду признателен, если кто-то може…
07 ноя '12 в 11:55
1 ответ

Ruby eigenclass pattern - запрос на уточнение

Какие источники информации описывают лучшие собственные классы Руби? Я прочитал следующее: (см. дополнительную страницу) Тем не менее, я не смог вывести следующее поведение: class Object def sc(n = 1) # nth superclass if n == 0 then return self end …
06 дек '10 в 22:34
1 ответ

Рубиновый класс << Klass = Module::new

У меня есть следующий синтаксис в фрагменте кода, и я не уверен, что он делает. class &lt;&lt; PushableModule = Module::new def new *args, &amp;blk m = Module::new( *args, &amp;blk ) m.extend Pushable m end end Во-первых, класс или модуль PushableMo…
10 июл '13 в 03:07
1 ответ

Почему определение метода в main определяет его как в Object, так и в main.singleton_class?

Я проверял, где определены методы в Ruby, когда определение выполняется на верхнем уровне, и результат удивителен: def foo; end singleton_class != Object # =&gt; true self.class == Object # =&gt; true m1 = singleton_class.instance_method :foo # =&gt…
26 ноя '12 в 12:45
3 ответа

Знание, является ли класс собственным классом

Какой лучший способ сказать, если класс some_class является собственным классом некоторого объекта?
10 окт '12 в 13:51