在ruby中,如何在定义全局变量时调用过程?

问题描述:

当检出ruby源代码时,一些全局变量的访问可能是虚拟的。在ruby中,如何在定义全局变量时调用过程?

我的意思是 define_global_variables_get("$a",some_get_procedure)define_global_variables_set("$a",some_set_procedure), 之类的东西,如果我没有记错, 所以实际上是访问的巨大一套红宝石全局变量中这样 一些全局变量。

所以我的问题是,我如何定义我的全局变量获取/设置 就像在红宝石代码?

+0

请重新表述您的问题,因为它是混乱的。真的很难说出你想知道的。 – 2010-12-16 00:26:42

+0

@ user195957,我确实找到了一种方法来做你想做的事(我想)。我完全重写了我的答案。我了解你想要做什么吗? – 2010-12-16 16:45:29

+0

你好,这有点让我故事的一部分,我的意思是获取/设置全局变量就像是访问某些程序,(就像在一个对象的属性),Base类; attr_accessor:许愿;最后,则基地。 new.vow实际上是一种方法。 – femto 2012-12-27 06:22:01

你想要一个全局变量,访问时,评估你的代码来获取变量的值?你可以做到这一点。你会想要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