В ruby, как вызвать процедуру при определении глобальных переменных? - PullRequest
0 голосов
/ 15 декабря 2010

при проверке исходного кода ruby, доступ к некоторым глобальным переменным может быть виртуальным.

Я имею в виду define_global_variables_get("$a",some_get_procedure), define_global_variables_set("$a",some_set_procedure), и тому подобное, если я правильно помню, так что на самом деле естьнекоторые глобальные переменные обращались таким образом среди огромного набора глобальных переменных ruby.

Итак, мой вопрос, как мне определить мою глобальную переменную get / set таким образом в коде ruby?

1 Ответ

2 голосов
/ 15 декабря 2010

Вам нужна глобальная переменная, которая при обращении оценивает ваш код, чтобы получить значение переменной?Вы можете сделать это.Вам понадобится обещание драгоценный камень.

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...