Доступность методов модуля Ruby - PullRequest
0 голосов
/ 01 марта 2012

У меня есть следующий модуль:

module Foo
  def f1 x
   puts "f1(#{x})"
  end
  def Foo.f2 x
   puts "f2(#{x})"
  end
end

Когда он входит в класс:

class Bar
    include Foo

    Foo.f2 "bar"   # This works
    f1 "bar"       # Missing method

    def b x
        f1 x       # This works too
    end
end

Почему поведение f1 отличается в двух случаях?

Как определяется область действия методов модуля?

Можно ли записать f1 так, чтобы он работал, как в случае f1 "bar"?Как например task в Rakefile?

1 Ответ

1 голос
/ 01 марта 2012

Если вы хотите добавить методы класса к Bar, вы захотите использовать included;см. пост Иегуды на эту тему .Это зависит (отчасти) от того, что вы на самом деле пытаетесь сделать.

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