我可以使用全局变量初始化类变量吗? (红宝石)

时间:2010-02-27 23:46:28

标签: ruby class-design scope class-variables

我是否为此类作业创建了额外的方法? @@variable = @global_variable为什么?我希望有一些变量可以通过我的脚本访问值和定义,并且只有一个定义位置。

@global_variable = 'test'

class Test

@@variable = @global_variable

  def self.display
    puts @@variable
  end
end

Test.display #gives nil

1 个答案:

答案 0 :(得分:8)

在Ruby中,全局变量以$为前缀,而不是@

$global = 123

class Foo
    @@var = $global
    def self.display
        puts @@var
    end
end

Foo.display

正确输出123。

您所做的是将一个实例变量分配给Module或Object类(不确定哪个);该实例变量不在您定义的类的范围内。