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

Rad*_*dek 1 ruby scope class-design class-variables

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

@global_variable = 'test'

class Test

@@variable = @global_variable

  def self.display
    puts @@variable
  end
end

Test.display #gives nil
Run Code Online (Sandbox Code Playgroud)

Mar*_*off 8

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

$global = 123

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

Foo.display
Run Code Online (Sandbox Code Playgroud)

正确输出123.

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

  • 实际上OP在"主对象"上设置了实例变量. (2认同)