有没有办法只获取我的脚本定义的常量?

时间:2017-02-07 16:05:33

标签: ruby constants

我想在我的脚本中定义常量,假设我有两个这样的文件:

script_two.rb

TWO = 'this is 2'

script_one.rb

require_relative 'script_two'

ONE = 'this is 1'
# Check for constants

我想知道如何获取常量数组[ONE, TWO](顺序并不重要)。

我知道Object.constants给出了一组当前常量,但包括许多其他常量,如TRUENIL等。

我想在开始时保持结果,然后在需要之后再次调用它,这样我才能有所作为。但它有点难看,还有另一种方式吗?

1 个答案:

答案 0 :(得分:3)

这很棘手,因为当你运行脚本时,没有一个类将你的常量放在main:Object上。因此,您需要能够知道在脚本执行之前定义了哪些常量。像这样的东西会起作用:

#script_one.rb
obj_cons = Object.constants
require_relative 'script_two'

ONE = 'this is 1'
puts self.class.constants - obj_cons

生成数组:[TWO,ONE] - 我相信这就是你想要的。

$ ruby script_one.rb
TWO
ONE