Как обернуть методы экземпляра и класса в Ruby? - PullRequest
1 голос
/ 17 января 2011

Я хотел бы добавить к классу D некоторые общие функции, которые состоят из методов экземпляра и методов класса. Я пытался сделать это, как показано ниже, но это не сработало. Как правильно достичь этого?

module A
  def foo
    puts "foo!"
  end
end

module B
  def wow
    puts "wow!"
  end
end

module C
  include A   # instance methods
  extend B    # class methods
end

class D
  include C
end

D.new.foo
D.wow

1 Ответ

6 голосов
/ 17 января 2011

Вам нужно определить C следующим образом, чтобы иметь возможность делать то, что вы хотите:

module C
  include A

  def self.included( base )
    base.extend B #"base" here is "D"
  end

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