Ruby Forum Rails-ES > Concatenar Variables

Posted by Diego Guti (protos)
on 29.04.2008 17:48
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!
Posted by Juan Pablo (Guest)
on 29.04.2008 17:59
(Received via mailing list)
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>:
Posted by javier ramirez (Guest)
on 29.04.2008 18:02
(Received via mailing list)
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
Posted by Diego Guti (protos)
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
Posted by javier ramirez (Guest)
on 29.04.2008 18:41
(Received via mailing list)
> 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
Posted by Diego Guti (protos)
on 29.04.2008 18:51
Vale, muchas gracias por la calidad y la velocidad de la explicación!

saludos
Posted by Xavier Noria (fxn)
on 29.04.2008 19:18
(Received via mailing list)
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.