Method_defined? doesn't see module methods?

module M
  def self.howdy
    "hello"
  end
end
p M.method_defined? :howdy #=> false

What question should I ask in order to get "true"? Thx - m.

···

--
matt neuburg, phd = matt@tidbits.com, http://www.tidbits.com/matt/
Leopard - http://www.takecontrolbooks.com/leopard-customizing.html
AppleScript - http://www.amazon.com/gp/product/0596102119
Read TidBITS! It's free and smart. http://www.tidbits.com

Alle Sunday 27 January 2008, matt neuburg ha scritto:

module M
  def self.howdy
    "hello"
  end
end
p M.method_defined? :howdy #=> false

What question should I ask in order to get "true"? Thx - m.

According to the ri documentation, method_defined? tells wether instances of
the class, or of a class including the module, will respond to the given
method. In other words :

Cls.method_defined?(:a_method) == true

means that

Cls.new.respond_to?(:a_method) == true

To know whether the module has a module method, you can use respond_to? on the
module:

M.respond_to?(:howdy)
=> true

I hope this helps

Stefano

Excellent, thanks! m.

···

Stefano Crocco <stefano.crocco@alice.it> wrote:

Alle Sunday 27 January 2008, matt neuburg ha scritto:
> module M
> def self.howdy
> "hello"
> end
> end
> p M.method_defined? :howdy #=> false
>
> What question should I ask in order to get "true"? Thx - m.

To know whether the module has a module method, you can use respond_to? on the
module:

M.respond_to?(:howdy)
=> true

--
matt neuburg, phd = matt@tidbits.com, Matt Neuburg’s Home Page
Leopard - http://www.takecontrolbooks.com/leopard-customizing.html
AppleScript - http://www.amazon.com/gp/product/0596102119
Read TidBITS! It's free and smart. http://www.tidbits.com