嗨,我刚接触ruby on rails请告诉我是否可以在函数/方法中声明一个变量
def fun1
#initialized a global variable
end
def fun2
#access value
end
是否可以通过fun2函数获取fun1函数中声明的变量的值
答案 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 的全局变量的使用情况。不仅仅是红宝石。你需要它用于轨道吗?