4

私はRubyが初めてです。私のサンプルコードは私にこの例外を与えています:

C:/Users/abc/RubymineProjects/Sample/hello.rb:5:in `<class:Hello>': undefined method `first_method' for Hello:Class (NoMethodError)
    from C:/Users/abc/RubymineProjects/Sample/hello.rb:1:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

プロセスは終了コード 1 で終了しました

私のコードは次のとおりです。

class Hello
  def first_method
    puts "Hello World"
  end
  first_method()
end

RubyMine 4.5.4 を使用しています。

4

3 に答える 3

3

他の回答とは対照的に(ただし、同じ出力を達成するために)、そのメソッド呼び出しをクラス内で機能させたい場合は、メソッドをクラスメソッドとして定義するだけです:

class Hello
  def self.first_method
    puts "Hello World"
  end
  first_method()
end

#=> "Hello World"

この 2 つの違いをもう少し詳しく説明するには、次のリンクが役立つことがわかりました。 /

于 2012-11-13T15:16:49.783 に答える
3

first_method問題は、クラスを呼び出そうとしていることですfirst_method。これはインスタンス メソッドです。インスタンス メソッドを呼び出すには、クラスのインスタンスを使用する必要があります。クラスのインスタンスを作成するには、 を使用できますSomeClass.new。したがって、メソッドを使用するには、次のコードを試してください (@megas と同じコード):

class Hello
  def first_method
    puts "Hello World"
  end
end

Hello.new.first_method
于 2012-11-13T13:45:52.513 に答える
0

これを試して:

class Hello
  def first_method
    puts "Hello World"
  end
end

Hello.new.first_method
于 2012-11-13T13:23:18.270 に答える