4

我是红宝石的新手。我的示例代码给了我这个例外:

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

问题是您试图调用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 回答
3

与其他答案相比(但要实现相同的输出),如果您确实希望该方法调用在您的类中工作,您可以简单地将方法定义为类方法:

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

#=> "Hello World"

我发现以下链接有助于更详细地解释两者之间的区别:http ://railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby /

于 2012-11-13T15:16:49.783 回答
0

尝试这个:

class Hello
  def first_method
    puts "Hello World"
  end
end

Hello.new.first_method
于 2012-11-13T13:23:18.270 回答