03. Variables y Asignaciones

Hasta ahora, cada vez que usamos puts en una string o un número, lo que imprimimos desaparece. Lo que quiero decir es que si quisiéramos imprimir algo dos veces, tendríamos que escribirlo dos veces:

puts '...puedes decir eso de nuevo...'
puts '...puedes decir eso de nuevo...'
...puedes decir eso de nuevo...
...puedes decir eso de nuevo...

Sería bueno si pudiéramos escribirlo una sola vez y mantenerlo cerca... guardarlo en algún lugar. Bueno, podemos, por supuesto, ¡de lo contrario no habría sacado el tema!

Para guardar la string en la memoria de tu computadora, necesitamos darle un nombre. Normalmente los programadores llaman a este proceso asignación, y llaman a los nombres variables. La variable puede ser prácticamente cualquier secuencia de letras y números, pero el primer carácter tiene que ser una letra minúscula. Vamos a ejecutar el último programa de nuevo, pero esta vez le daré a la string el nombre de miString (aunque podría haberla llamado str o miPequeñaString o pedroPrimero).

miString = '...puedes decir eso de nuevo...'
puts miString
puts miString
...puedes decir eso de nuevo...
...puedes decir eso de nuevo...

Siempre que intentaste hacer algo con miString, el programa lo hizo con '...puedes decir eso de nuevo...' en su lugar. Puedes pensar en la variable miString como "apuntando a" la string '...puedes decir eso de nuevo...'. He aquí un ejemplo un poco más interesante:

nombre = 'Patricia Rosanna Jessica Mildred Oppenheimer'
puts 'Me llamo ' + nombre + '.'
puts '¡Vaya!  ' + nombre + ' es un nombre muy largo!'
Me llamo Patricia Rosanna Jessica Mildred Oppenheimer.
¡Vaya!  Patricia Rosanna Jessica Mildred Oppenheimer es un nombre muy largo!

Así como podemos asignar un objeto a una variable, podemos reasignar un objeto diferente a la misma variable (y es por eso que las llamamos variables: porque la cosa a la que apuntan puede variar).

compositor = 'Mozart'
puts compositor + ' era "la bomba", en su época.'

compositor = 'Beethoven'
puts 'Pero yo, personalmente, prefiero a ' + compositor + '.'
Mozart era "la bomba", en su época.
Pero yo, personalmente, prefiero a Beethoven.

Las variables pueden, por supuesto, apuntar a cualquier tipo de objeto, no solo strings:

var = 'sólo otra ' + 'string'
puts var

var = 5 * (1+2)
puts var
sólo otra string
15

De hecho, las variables pueden apuntar a cualquier cosa... excepto a otras variables. Entonces, ¿qué pasa si lo intentamos?

var1 = 8
var2 = var1
puts var1
puts var2

puts ''

var1 = 'ocho'
puts var1
puts var2
8
8

ocho
8

Primero, cuando intentamos apuntar var2 a var1, var2 apuntó a 8 (exactamente como var1 apuntaba). Luego hicimos que var1 apuntara a 'ocho', pero como var2 nunca apuntó realmente a var1, se mantiene apuntando a 8.

Ahora que tenemos variables, números y strings, ¡vamos a aprender cómo mezclarlos todos!