我刚开始使用Ruby进行编程,我正在尝试使用类似于下面的类似调试开关,类似于C外部变量。我的问题是,我不知道如何在一个文件的模块X中的一个文件中有一个变量,并在另一个文件的同一模块中访问它。
我宁愿不使用全局变量,因为它们不受范围的限制 - 我可以使用范围广泛的变量吗?
(注意,这是std ruby 2.0.0 - NOT rails!)
干杯, 克里斯
#file A.rb
module foo
@@myVariable = 'ruby'
##do something
end #end foo
#file B.rb
module foo
module self.bar(x)
if(@@myVariable == 'ruby')
puts 'do a barrel roll'
end
end #end bar
##do something
end #end foo
undefined variable @@myVariable
答案 0 :(得分:1)
试试这个:
# file_a.rb
module Foo
BARREL_ROLL = true
end
# file_b.rb
require_relative 'file_a'
module Bar
if Foo::BARREL_ROLL == true
puts 'do a barrel roll'
end
end
备注强>:
@@myVariable
是class variable
,通常不建议使用,请尽量不要使用它。Rubyesque
的做事方式;您的代码似乎受到您之前语言风格的影响。遵循该指南将使您的代码对于社区中的大多数人来说更具可读性,并且很快就会为您自己。答案 1 :(得分:1)
为了让文件A影响文件B中的代码,B需要require
A。
A.rb
module Foo
@@x = 1
end
B.rb
require './A'
module Foo
def self.bar
@@x
end
end
p Foo.bar
# 1