单个 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 $"
您可以结合使用 require
和 require_relative
从代码库中的其他文件或已安装的其他库中导入代码。您可以使用这些方法以及使用文件夹来组织代码以保持整洁。
我上传了一个非常非常基本的示例,以便您了解一些导入的工作原理:
https://github.com/jaydorsey/game
我试图说明如何使用文件夹和 require_relative
来尝试和组织代码。
ruby 文档对这两种方法有更多详细信息:
所以这可能真的很简单,但我自己找不到合适的词 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 $"
您可以结合使用 require
和 require_relative
从代码库中的其他文件或已安装的其他库中导入代码。您可以使用这些方法以及使用文件夹来组织代码以保持整洁。
我上传了一个非常非常基本的示例,以便您了解一些导入的工作原理:
https://github.com/jaydorsey/game
我试图说明如何使用文件夹和 require_relative
来尝试和组织代码。
ruby 文档对这两种方法有更多详细信息: