Ruby变量(外部?)

时间:2015-01-21 17:36:25

标签: ruby

我刚开始使用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

2 个答案:

答案 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

备注

  1. @@myVariableclass variable,通常不建议使用,请尽量不要使用它。
  2. 我知道你刚开始使用Ruby,或许可以查看style guide可能会帮助你改进更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