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

Context of required files within a single Ruby gem

所以这可能真的很简单,但我自己找不到合适的词 Google。我刚开始在 SoloLearn 上学习 Ruby,他们的一个例子是一个非常简单的 RPG 游戏(真的只是一场战斗),它似乎是一个完美的练习项目。我有一个 gem 结构如下:

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

game.rb 有 class Player 应该是 [=15] 中每个字符 class (歧义的字符类型)的超 class =]. chars.rb 中的 class 可以继承 game.rb 中的 class 吗?

Ruby 使用 require 导入其他文件。

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

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

有趣的是,您可以使用

打印所有导入文件的名称
puts $"

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

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

https://github.com/jaydorsey/game

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

ruby 文档对这两种方法有更多详细信息:

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