0

私はまだルビーに不慣れです。メソッドの可視性がわかりません。ドキュメントによると、すべてのメソッドはデフォルトでパブリックです(特に定義されていない限り)。したがって、これは機能するはずです(ただし、機能しません、MWE):

modules/example.rb

class Example

  def do_stuff
    puts 'hello world'
  end

end

およびtesting.rb

load 'modules/example.rb'

Example.new
Example.do_stuff

$ ruby testing.rb 結果を呼び出す

testing.rb:9:in `<main>': undefined method `do_stuff' for Example:Class (NoMethodError)

誰かが理由を説明できますか?do_stuffそして、私が直接呼び出すことができるようにそれを修正する方法は?

4

1 に答える 1

2

インスタンス メソッドを定義していて、それを Example クラスのインスタンスで呼び出す必要があります。

ex_instance = Example.new
ex_instance.do_stuff

直接呼び出したい場合は、クラス メソッドとして定義する必要があります。

class Example

  def self.do_stuff
    puts 'hello world'
  end

end

次に、呼び出す必要なく、このように呼び出すことができますExample.new

Example.do_stuff
于 2012-09-14T10:44:37.450 に答える