Buenas, estoy intentando hacer un pequeño programa y se me plantea el siguiente problema: ab="Texto de prueba" c="a" d="b" puts c+d El caso esque yo lo que quiero esque el puts muestre "Texto de prueba", pero muestra "ab". Como puedo hacer para que una variable apunte a otra, es decir, si por ejemplo ahora añado: ab="Texto de prueba" c="a" d="b" e=c+d Que la variable e, contenga a la variable ab, no a la cadena "ab", eso es lo que me interesa. Bueno, gracias de antemano y saludos!
on 29.04.2008 17:48
on 29.04.2008 17:59
En todos los casos estas asignando texto a las variables, ese es el problema. irb(main):001:0> a = "hola" => "hola" irb(main):002:0> b = a => "hola" irb(main):003:0> b => "hola" irb(main):004:0> En tu ejemplo la linea c="a" no asigna el valor de la variable a, sino la letra a. 2008/4/29 Diego Guti <ruby-forum-incoming@andreas-s.net>:
on 29.04.2008 18:02
Hola, > ab="Texto de prueba" > c="a" > d="b" > puts c+d > > El caso esque yo lo que quiero esque el puts muestre "Texto de prueba", > pero muestra "ab". > eso que pides huele de lejos a peligro y a código difÃcil de mantener... pero sin entrar a valorar si lo que quieres es buena idea o no, se consigue asà eval c+d suerte, javier ramÃrez
on 29.04.2008 18:13
> > eso que pides huele de lejos a peligro y a código difÃcil de mantener... > pero sin entrar a valorar si lo que quieres es buena idea o no, se > consigue asà > > eval c+d > > suerte, > > javier ramÃrez Vale, muchas gracias, ahora si que me funciona. Pero el caso siempre es mejorar, y no entiendo el porqué de el codigo será dificil de mantener o peligroso. gracias de nuevo y saludos
on 29.04.2008 18:41
> Vale, muchas gracias, ahora si que me funciona. Pero el caso siempre es > mejorar, y no entiendo el porqué de el codigo será dificil de mantener o > peligroso. > En general el código que es difÃcil de entender es difÃcil de mantener. Utilizar una evaluación de variables de esa manera no es algo obvio, por lo que de cara a mantener el código necesitarás un comentario explicando qué hace. En general los comentarios que no se pongan a principio de un método sino que aparezcan en medio, suelen indicar que se usó algo que no era evidente, y muchas veces se tiende a no tocar esas partes del código para que no se rompa nada. Eso puede hacer que tu código, en una hipotética refactorización, no se mejore por miedo a que deje de funcionar. En cuanto al peligro, cada eval es un potencial peligro, depende de dónde venga la información que vas a evaluar. Si esa información viene de un usuario final, te puede colar código ruby. saludos, javier ramÃrez
on 29.04.2008 18:51
Vale, muchas gracias por la calidad y la velocidad de la explicación! saludos
on 29.04.2008 19:18
On Apr 29, 2008, at 17:48 , Diego Guti wrote: > Buenas, estoy intentando hacer un pequeño programa y se me plantea el > siguiente problema: > > ab="Texto de prueba" > c="a" > d="b" > puts c+d Normalmente esto es signo de que necesitas un hash en lugar de variables.