如何在函数中声明ROR3.0中的全局变量?

时间:2012-09-08 05:39:57

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

嗨,我刚接触ruby on rails请告诉我是否可以在函数/方法中声明一个变量

def fun1
  #initialized a global variable 
end  

def fun2
  #access value   
end 

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

2 个答案:

答案 0 :(得分:1)

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

def fun1
  $foo = 'bar'
end  

def fun2
  puts $foo
end 

一旦$foo被调用,此类fun1在类实例外可用。

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

  

他们很危险,因为   它们可以从任何地方写入。过度使用全局变量可以   隔离虫很难;它也倾向于表明设计   一项计划尚未经过深思熟虑。

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

def fun1
  @foo = 'bar'
end  

def fun2
  puts @foo
end 

此类@foo在类的当前实例中的任何位置都可用,再次通过调用fun1声明它。

请参阅ruby中各种变量范围的示例this

答案 1 :(得分:0)

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

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