Я новичок в Ruby, и до сих пор выяснение того, как использовать "привязывающие" объекты, является одной из самых больших болевых точек для меня. Если я правильно читаю документацию, они почти полностью непрозрачны. Чтобы получить доступ к области внутри объекта привязки, вы должны иметь строку кода Ruby и eval, используя привязку.
Может быть, я просто пурист из другой школы, но у меня аллергия на строковые конструкции "eval", вообще говоря. Есть ли способ сделать одно из следующего, надежно и в общем случае, с учетом объекта привязки:
- Перечислите идентификаторы в области видимости в контексте, представляющем привязку, или получите хэш содержимого.
- Задайте значение локальной переменной в привязке, равную значению некоторой локальной переменной во внешнем контексте. В идеале это должно работать в целом, даже если значение является ссылкой на объект, файловым дескриптором или каким-либо другим сложным объектом.
- (extension 2:) Если задан хэш, задайте locals в привязке для каждой записи.
- Еще лучше, учитывая хэш, строит привязку только с базовыми языковыми конструкциями и именами в хэш-области.
В принципе, я хочу знать, какая из них возможна, и как выполнить те, которые есть. Я полагаю, что решения для каждого из них будут довольно тесно связаны, поэтому я ставил все это в один вопрос.
В качестве альтернативы, существует ли какой-либо способ eval-кода, который уже был проанализирован в контексте привязки, подобно синтаксису BLL-кода Perl eval?