首页 > 解决方案 > NoMethodError 但做了'require_relative'

问题描述

我做了'requir_relative',但仍然得到NoM​​ethodError。

有 2 个 ruby​​ 文件,在“run.rb”下我有这个

class Run
  def separate(data)
    hash_block = []
    (0...data.count).each do |i|
      f = data[i].split('|')
      hash_block[i] = Hashing.new(f[0].to_i, f[1], f[2], f[3], f[4])
    end
    hash_block
  end
end

然后在主文件中,我做了这些:

require_relative 'run'

...some codes...

to_separate = IO.readlines(ARGV[0])
separated = separate(to_separate)

...some codes...

但我仍然得到这个:

in `block in <main>': undefined method `separate' for main:Object (NoMethodError)

如果我剪切该方法并将其粘贴到主文件中,它将按预期工作,但这是我想避免的。

标签: ruby

解决方案


您需要该文件,但在该文件中您有一个类定义。separate在该类中(这是一个实例方法),因此您需要一个对象来调用该方法。

separated = Run.new.separate(to_separate)

推荐阅读