我做了'requir_relative',但仍然收到NoMethodError。
有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)
如果我剪切了该方法并将其粘贴到主文件中,它将按预期运行,但这是我要避免的事情。
答案 0 :(得分:0)
您需要文件,但是在该文件中有一个类定义。 separate
位于该类的内部(这是一个实例方法),因此您需要一个对象来调用该方法。
separated = Run.new.separate(to_separate)
答案 1 :(得分:0)
要在Run类中调用该方法,必须实例化它。因为是实例方法。调用类的方式给您错误undefined
,因为它在您当前文件的范围内找不到它
run_instance = Run.new
to_separate = IO.readlines(ARGV[0])
sperated = run_instance.separate(to_separate)