Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在ROR3.0中在函数中声明全局变量?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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

Ruby on rails 如何在ROR3.0中在函数中声明全局变量?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,您好,我是RubyonRails新手,请告诉我是否可以在函数/方法中声明变量 def fun1 #initialized a global variable end def fun2 #access value end 是否可以通过fun2函数获取fun1函数中声明的变量值要创建真正的全局变量,请使用$: def fun1 $foo = 'bar' end def fun2 puts $foo end 调用fun1后,$foo在类实例外部可用 如第一条

您好,我是RubyonRails新手,请告诉我是否可以在函数/方法中声明变量

def fun1
  #initialized a global variable 
end  

def fun2
  #access value   
end 
是否可以通过fun2函数获取fun1函数中声明的变量值

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

def fun1
  $foo = 'bar'
end  

def fun2
  puts $foo
end 
调用
fun1
后,
$foo
在类实例外部可用

如第一条评论所述,这:

它们很危险,因为 可以从任何地方写信给他们。过度使用globals会导致 很难分离细菌;它还倾向于表明 一个计划没有经过仔细考虑

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

def fun1
  @foo = 'bar'
end  

def fun2
  puts @foo
end 
在这里,
@foo
在类的当前实例中的任何位置都可用,只要调用
fun1
声明了它


例如,请参见ruby中的各种变量作用域。

首先,如果您可以分享您需要从函数定义全局变量的实际场景,那就更好了。对于您的解决方案,可能有更好的、可管理的、干燥的方法

其次,除了“Thilo”的答案之外,这里有一些参考资料显示了在不同情况下对rails使用全局变量。不仅仅是为了ruby。您需要它来安装rails,对吗


需要注意的是,非常不鼓励使用全局变量,
$variable\u name
,尤其是Ruby开发人员。