【发布时间】: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
嗨,我是 ruby on rails 的新手,请告诉我是否可以在函数/方法中声明变量
def fun1
#initialized a global variable
end
def fun2
#access value
end
是否可以通过 fun2 函数获取 fun1 函数中声明的变量的值
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3
要创建真正的全局变量,请使用$:
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 开发人员中。
首先,如果您可以分享您的实际场景,以便从函数中定义全局变量,那会更好。对于您的解决方案,可能有更好、更易于管理的 DRY 方法。
其次,除了“Thilo”的回答之外,这里有一些参考资料显示了在不同情况下 rails 的全局变量的用法。不只是为了红宝石。 Rails 需要它吗?
【讨论】: