0

我想全局使用在主脚本中创建的对象。

例如,我在不同的文件中有不同的模块,在不同的 ruby​​ 文件中有不同的类

文件名ModA.rb

module A
  # ........
  # some code here
  # ........
end

文件名ModB.rb

module B
  # ........
  # some code here
  # ........
  objReport.addReport() # getting an error "ruby uninitialized local variable or object: Main"
end

FileNameClass_Report.rb

class Report
  def addreport()
  end
end

主脚本.rb

require "FileNameModA"
require "FileNameModB"
require "FileNameClass_Report"

include ModuleA
include ModuleB

objReport = Report.New

objReport.addReport() # Works fine here

您能否让我知道如何在 Ruby 的不同文件/模块中创建和使用对象?

4

1 回答 1

2

当您require "FileNameModB"执行模块 B 的定义以及objReport.addReport该上下文中不存在的定义调用时

我不确定你想通过在模块定义期间调用 addReport 来实现什么,但你可以交换一些行并让它像这样工作:

require "FileNameClass_Report"
$objReport = Report.New

require "FileNameModA"
require "FileNameModB" # update your file to call $objReport.addReport

include ModuleA
include ModuleB

整个事情看起来像一团糟,试着重新考虑你的类/模块以避免将它们包含到全局对象中

于 2012-07-09T13:24:33.607 回答