【问题标题】:How declare a global variable in ROR3.0 within a function?ROR3.0中如何在函数内声明全局变量?
【发布时间】:2012-09-01 22:35:06
【问题描述】:

嗨,我是 ruby​​ on rails 的新手,请告诉我是否可以在函数/方法中声明变量

def fun1
  #initialized a global variable 
end  

def fun2
  #access value   
end 

是否可以通过 fun2 函数获取 fun1 函数中声明的变量的值

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    要创建真正的全局变量,请使用$

    def fun1
      $foo = 'bar'
    end  
    
    def fun2
      puts $foo
    end 
    

    一旦调用了fun1,这里$foo 就在类实例之外可用。

    如第一条评论所述,should be used sparingly:

    它们很危险,因为 它们可以从任何地方写入。过度使用全局变量会导致 隔离错误很困难;它也往往表明设计 一个程序没有经过深思熟虑。

    您可能要求的是一个实例变量,它使用@

    def fun1
      @foo = 'bar'
    end  
    
    def fun2
      puts @foo
    end 
    

    这里@foo 在类的当前实例中的任何位置都可用,一旦通过调用fun1 声明了它。

    请参阅 this 中有关 ruby​​ 中各种变量范围的示例。

    【讨论】:

    • 请务必注意,强烈建议不要使用全局变量 $variable_name,尤其是在 Ruby 开发人员中。
    【解决方案2】:

    首先,如果您可以分享您的实际场景,以便从函数中定义全局变量,那会更好。对于您的解决方案,可能有更好、更易于管理的 DRY 方法。

    其次,除了“Thilo”的回答之外,这里有一些参考资料显示了在不同情况下 rails 的全局变量的用法。不只是为了红宝石。 Rails 需要它吗?

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      相关资源
      最近更新 更多