0

我正在尝试是否可以打电话Class instance methodsinstances of class因此尝试了以下方法:

class Foo
    def show; p "hi" ; end
    def self.display ; p "hello" ; end
end
#=> nil

Foo.display
#"hello"
#=> "hello"

Foo.new.show
#"hi"
#=> "hi"

Foo.show
#NoMethodError: undefined method `show' for Foo:Class
#from (irb):7
#from C:/Ruby200/bin/irb:12:in `<main>'

但在下面的调用中,我预计与NoMethodError: undefined method `display'相同的错误。但为什么不是这样呢?

Foo.new.display
#<Foo:0x538020> #=> nil
foo = Foo.new
#=> #<Foo:0x22bc438>
foo.display
#<Foo:0x22bc438> #=> nil
4

1 回答 1

3

所有对象都有一个现有的方法display

class Bar
end

Bar.new.methods.grep(/disp/) # => [:display]
Bar.methods.grep(/disp/) # => [:display]

您的代码只是为Foo. 选择另一个名称(display1例如 ),您将看到预期的错误。

于 2013-03-30T09:38:56.513 回答