类继承时出现未初始化常量错误

Joh*_*Doe 3 ruby inheritance class

显然,我对红宝石的理解有些不对劲。我有 3 个 ruby​​ 文件,主要文件、基础文件和派生文件。我有两个Derived专业的课程Base

/bin/main.rb

require './lib/base'
Run Code Online (Sandbox Code Playgroud)

/lib/base.rb

require './lib/derived'
class Base

end
Run Code Online (Sandbox Code Playgroud)

/lib/派生.rb

require './lib/base'
class Derived < Base

end
Run Code Online (Sandbox Code Playgroud)

带耙子运行ruby './bin/main.rb'

 `<top (required)>': uninitialized constant Base (NameError)
Run Code Online (Sandbox Code Playgroud)

是什么导致了错误?

编辑:我刚刚意识到我遗漏的一点是我忘记了这require是一种 Kernel#method,我不需要像通常使用其他语言那样每次都掌握我的代码。

Mic*_*ill 6

这里的问题是文件'./lib/derived'中的require实际上/lib/base.rb导致在. 试试这个:/lib/derived.rbBase/lib/base.rb

/bin/main.rb

require './lib/base'
require './lib/derived'

puts 'Success!'
Run Code Online (Sandbox Code Playgroud)

/lib/base.rb

class Base

end
Run Code Online (Sandbox Code Playgroud)

/lib/派生.rb

require './lib/base'
class Derived < Base

end
Run Code Online (Sandbox Code Playgroud)

这允许声明以正确的顺序发生。

require './lib/base'附带说明一下,从技术上讲, in并不是必需的lib/main.rb,因为它实际上已成功包含在 中lib/derived.rb,但如果Base直接在 主体中使用,则这是一种很好的形式lib/main.rb