在Rubymine中定义一个方法返回"未定义的方法"错误

时间:2015-05-07 02:46:10

标签: ruby rubymine

我正在执行一个只在rubymine中使用此代码的类:

def saythis(x)
  puts x
end
saythis('words')

它返回错误:undefined method `saythis',而不是打印字符串'words'。我在这里错过了什么?在irb中复制此代码会打印字符串'words'

1 个答案:

答案 0 :(得分:0)

我假设您编写了一个类似下面的类,并没有将该代码写入irb控制台。问题是您定义了一个实例方法,但尝试从类级别调用该方法。

class Foo
  def say_this(x)      # <= defines an instance method
    puts x
  end
  say_this('words')    # <= calls a class method
end

有两种方法可以“解决”这个问题:

  1. 定义类方法而不是实例方法:def self.say_this(x)
  2. 调用实例方法而不是类方法调用:new.say_this(x)