如果我可以通过Class instance methods
拨打instances 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
答案 0 :(得分:3)
所有对象都有一个现有方法display
。
class Bar
end
Bar.new.methods.grep(/disp/) # => [:display]
Bar.methods.grep(/disp/) # => [:display]
您的代码只会覆盖Foo
的实例。选择其他名称(例如display1
),您就会看到预期的错误。