Soy bastante nuevo para Ruby, y hasta ahora, descubrir cómo usar "binding" objects es uno de los mayores puntos débiles para mí. Si estoy leyendo la documentación correctamente, son casi completamente opacos. Para acceder al alcance dentro del objeto vinculante, debe tener una cadena de código Ruby y eval usando el enlace.¿Es 'eval' la única forma de interactuar con objetos vinculantes en Ruby?
Tal vez soy solo un purista de una escuela diferente, pero soy alérgico a las construcciones 'eval' basadas en cuerdas, en general. ¿Hay alguna manera de hacer cualquiera de los siguientes, de forma segura y en el caso general, dado un objeto de enlace:
- Lista de los identificadores de alcance en el contexto representa la unión, o recuperar un hash de los contenidos.
- Establezca el valor de una variable local en el enlace igual a la de una variable local en un contexto externo. Idealmente, esto debería funcionar en general, incluso si el valor es una referencia de objeto, manejador de archivo o alguna otra entidad compleja.
- (extensión 2 :) Dado un hash, configure los locales en el enlace de cada entrada.
- Mejor aún, dado un hash construir un enlace con solo las construcciones de lenguaje básico y los nombres en el hash en el alcance.
Básicamente, quiero saber cuál de esos es posible y cómo lograr los que sí lo son. Me imagino que las soluciones para cada uno estarán bastante relacionadas, por eso planteo todo esto en una sola pregunta.
Como alternativa, ¿hay alguna manera de evaluar el código que ya se ha analizado en el contexto de un enlace, similar a la sintaxis de eval BLOCK de Perl?
esta pregunta necesita más @ Jörg W Mittag: P –