在ruby中,如何在定义全局变量时调用过程?
问题描述:
当检出ruby源代码时,一些全局变量的访问可能是虚拟的。在ruby中,如何在定义全局变量时调用过程?
我的意思是 define_global_variables_get("$a",some_get_procedure)
, define_global_variables_set("$a",some_set_procedure)
, 之类的东西,如果我没有记错, 所以实际上是访问的巨大一套红宝石全局变量中这样 一些全局变量。
所以我的问题是,我如何定义我的全局变量获取/设置 就像在红宝石代码?
答
你想要一个全局变量,访问时,评估你的代码来获取变量的值?你可以做到这一点。你会想要promise宝石。
#!/usr/bin/ruby1.8
require 'promise'
$a = promise do
puts "generating value of $a"
123
end
这将$ a设置为该块的结果,但该块将不会被执行,直到$ a被实际访问。让我们来访问它的第一次:
puts $a
# => generating value of $a
# => 123
访问它第二次将返回缓存的值,所以该块将不会再次叫:
puts $a
# => 123
请重新表述您的问题,因为它是混乱的。真的很难说出你想知道的。 – 2010-12-16 00:26:42
@ user195957,我确实找到了一种方法来做你想做的事(我想)。我完全重写了我的答案。我了解你想要做什么吗? – 2010-12-16 16:45:29
你好,这有点让我故事的一部分,我的意思是获取/设置全局变量就像是访问某些程序,(就像在一个对象的属性),Base类; attr_accessor:许愿;最后,则基地。 new.vow实际上是一种方法。 – femto 2012-12-27 06:22:01