单个Ruby gem中所需文件的上下文

时间:2018-12-14 20:09:32

标签: ruby class inheritance game-engine

所以这可能真的很简单,但我本人无法找到合适的词与Google交流。我刚开始在SoloLearn上学习Ruby,其中的一个例子是一个非常简单的RPG游戏(真的只是一场战斗),这似乎是一个完美的练习项目。我有一个这样的宝石:

Game/
     game.gemspec
     lib/
         game.rb
         chars.rb

game.rb具有类Player,它应该是chars.rb中每个字符类(用于歧义的字符类型)的超类。 chars.rb中的类可以从game.rb中的类继承吗?

2 个答案:

答案 0 :(得分:1)

Ruby使用require导入其他文件。

一些概念可以更好地理解这一点,

  • require导入另一个Ruby文件。
  • 当Ruby导入文件中的代码时,该文件将逐行执行。
  • 执行类定义时,该类将添加到全局名称空间。
  • 因此,在导入定义了您的班级的文件之后,即使没有直接导入该文件,任何文件都可以访问您的班级。为了避免令人讨厌的意外,尽管最好是每当使用一个类时都重复require语句,或者依赖于自动加载,例如Rails。 Ruby会跟踪所有导入的文件,因此即使您多次导入文件,它也不会多次执行它们。

有趣的是,您可以使用打印所有导入文件的名称

puts $"

答案 1 :(得分:0)

您可以结合使用requirerequire_relative从代码库中的其他文件或已安装的其他库中导入代码。您可以结合使用这些方法和使用文件夹来组织代码,以保持代码整洁。

我上传了一个非常非常基本的示例,因此您可以了解某些导入的工作原理:

https://github.com/jaydorsey/game

我试图说明如何使用文件夹和require_relative来尝试组织代码。

ruby​​文档对这两种方法都有更详细的说明:

http://ruby-doc.org/core-2.5.3/Kernel.html#method-i-require