【问题标题】:Can I initialize a class variable using a global variable? (ruby)我可以使用全局变量初始化类变量吗? (红宝石)
【发布时间】:2011-01-21 21:48:16
【问题描述】:

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

@global_variable = 'test'

class Test

@@variable = @global_variable

  def self.display
    puts @@variable
  end
end

Test.display #gives nil

【问题讨论】:

    标签: ruby class-design scope class-variables


    【解决方案1】:

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

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

    正确输出 123。

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

    【讨论】:

    • 其实OP在“主对象”上设置了实例变量。
    • @Mark Rushakoff:你是对的。谢谢你。甚至@@variable = @@global_variable 也有效。
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多