Variables en Ruby

A diferencias de otros lenguajes de programación, en Ruby no tenemos que decirle que tipo de dato va a guardar la variable. Es decir, a las variables le podemos cambiar el tipo de dato en cualquier momento.

Ruby es un lenguaje dinámico (las variables no necesitan ser declaradas) y fuertemente tipado (aunque no necesiten ser declaradas, las variables conservan el tipo del valor al que son inicializadas).

Dentro de irb podemos hacer las siguientes pruebas:

Creamos la variable edad y le asignamos el valor de 30, y nos devuelve 30.

En el siguiente paso llamamos a la variable edad y nos vuelve a devolver 30.

 

Hacemos la prueba de cambiar el tipo de edad y vemos que lo admite:

 

Referencias a Objectos

Las variables contienen referencias a objectos, no los objetos mismos.

person1 = "Tim"
person2 = person1
person1[0] = 'J'
puts "#{person1} id-->,#{person1.__id__}" # --> Jim id-->,47286622078780
puts "#{person2} id-->,#{person2.__id__}" # --> Jim id-->,47286622078780

 

Para evitar el «aliasing» se usa dup:

person1 = "Tim"
person2 = person1.dup
person1[0] = 'J'
puts "#{person1} id-->,#{person1.__id__}" # --> Jim id-->,47444571720960
puts "#{person2} id-->,#{person2.__id__}" # --> Tim id-->,47444571720860

 

Para impedir que alguien cambie un objecto, se puede utilizar también el freezing.

person1 = "Tim"
person2 = person1
person1.freeze
person2[0] = "J" # can't modify frozen String (FrozenError)