При выполнении кода после того, как полностью загружается класс

Лично, я имею больше доверия платформе Linux как сервер, но хочу использовать C# в качестве языка программы.

6
задан Ivan 5 October 2009 в 01:55
поделиться

1 ответ

В Ruby класс никогда не загружается полностью. Вы можете снова открыть его, когда захотите.

class A
  def method_in_a
    …
  end
end

Вы можете сделать это позже, независимо от того, где находится ваш код (даже в другом файле исходного кода).

class A
  alias :aliased_method_in_a :method_in_a
end

или вы можете сделать это так, как вы его написали (что именно так такой же, как и в предыдущем коде)

A.class_eval do
  alias :aliased_method_in_a :method_in_a
end

Как вы указали, A # method_in_a должен существовать в то время, когда вы его назначаете. Чтобы убедиться, что это правда, вы можете сделать

require "file_of_class_a"

перед тем, как делать псевдоним. Если вы не знаете, когда будет создан метод A # method_in_a, вы можете сделать

class A
  def self.method_added(name)
    alias :aliased_method_in_a :method_in_a if name == :method_in_a
  end
end

A.method_added автоматически вызывается всякий раз, когда определяется метод в A.

6
ответ дан 17 December 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: