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 に答える