【发布时间】:2012-01-17 18:23:57
【问题描述】:
我正在尝试用 Ruby(而不是 Rails)编写游戏,以便更好地自学。 (意思是,我想把这件事做对,但如果我试图硬塞一些在 Ruby 中无法使用的东西,我会切换语言。)我遇到了 require order 的问题,我'想知道是否有一种干净的方法来执行以下操作。
到目前为止,这是我的结构:
game
Gemfile
src
models
character.rb
game_object.rb
init.rb
init.rb 需要这样的文件,而不是单独列出每个文件:
Dir['./src/**/*.rb'].each do |app|
require app
end
到目前为止,game_object.rb 非常简单,但 character.rb 看起来像这样:
module Game
class Character < Game::GameObject
attr_accessor :name
def initialize(name)
@name = name
end
end
end
不幸的是,如果我这样做,我会得到“未初始化的常量 Game::GameObject (NameError)”,除非我在其他文件之前明确要求 game_object。
在我看来,我有几个选择:
- 先在 init.rb 中加载 game_object(和其他超类)。
- 在 character.rb 中需要 game_object,这似乎有问题,因为根据我使用的路径,我的理解是它可能会多次加载文件。
- 单独加载每个文件并完全手动管理订单,因此我可以完全控制。
这些似乎都比应有的复杂。有没有更清洁的方法?
【问题讨论】: