Я хотел бы быть в состоянии сделать это в Ruby:Ruby: Копирование объекта любого типа от одного модуля к другому
module A
@var = Object.new # could be any object
def f
puts @var.inspect
end
module_function :f
end
module B
def make_it(val)
# creates reference to val in this module under the same name as
# it appears in module A
end
module_function :make_it
end
Так что это сделает модуль B отвечает как делает модуль A:
B.make_it(# a reference to @var in module A)
B.make_it(# a reference to f in module A)
Это позволит Bf действовать как Af и Bf бы вернуть «инспектировать» из @var в модуле A или «инспектировать» из @var в B, где он является копией , что в А.
Я попросил, чтобы ссылки были сделаны в B, но также могли жить с копиями.
Кто-нибудь знает, можно ли это сделать? Для примера было бы замечательно, но любая помощь была бы высоко оценена. У меня довольно много ошибок, но я не знаю, как фразовать поиск.
Назначение модулей mulitple состоит в том, чтобы иметь один для использования программой, а другой для данных из пользовательской среды, которая получает eval'd. Я хочу, чтобы определенные методы были доступны для пользовательской среды (пространство имен), и я хочу, чтобы она выполнялась динамически. Эти методы всегда доступны для не-eval'd стороны приложения. –