在 Ruby 脚本中包含另一个脚本

Rob*_*uch 1 ruby

假设我有以下脚本。

脚本1.rb

x=1
Run Code Online (Sandbox Code Playgroud)

脚本2.rb

# Something like: import script1
y=2
puts x+y
Run Code Online (Sandbox Code Playgroud)

是否可以“合并”这些脚本,即以某种方式“导入” script1.rb 到 script2.rb 中,以便运行 script2.rb 会打印“3”?

我已经尝试过类似的语句require_relativeload但结果是:

b.rb:4:in <main>': undefined local variable or methodx' for main:Object (NameError)

Dav*_*hta 6

是的:

require_relative 'yourOtherFile'
Run Code Online (Sandbox Code Playgroud)

你不需要.rb在最后加上钉子。中的“相对”部分require_relative意味着“在我所在的同一文件夹中查找其他文件”

如果您想在文件 B 中访问文件 A 中的一个变量,则必须将其设为全局变量 ( $x = 5)。这可以工作,但不是组织代码的好方法(因为它造成了全局范围被许多不同变量污染的环境。

您应该将代码组织成类:

class Planet
  @@x = 0

  def self.doStuffToX
    @xx += 4
  end

  def self.getX
    @@x
  end  
end
Run Code Online (Sandbox Code Playgroud)

您可以请求此文件,然后使用Plant.getXPlant.doStuffToX来访问和更改x.