En este post vamos a repasar las variables en Ruby, cómo se definen y cómo se comportan. De manera general nosotros encontramos los siguientes tipos de variables en Ruby.
# Tipos de variables en Ruby:
$global
@instancia
@@instancia
variable_local # Nombre en minúscula con camelcase.
CONSTANTE # Nombre en mayúscula
Sabiendo cuales son los tipos de variables que podemos manejar, comencemos con cada uno de estos tipos:
⭐ Variables Globales
Cómo su mismo nombre lo indica, son variables que declaramos y viven de manera global en el proyecto. Para declarar una variable global lo hacemos usando el carácter de pesos $
Demos le un vistazo al siguiente ejemplo.
$author = "Carlos Esteban Leon Pinilla"
class Variables
def self.print_autor
puts $author
end
end
# Llamado de mêtodo de clase
Variables.print_autor
# OUT -> Carlos Esteban Leon Pinilla
El código usa una variable global $author accesible en toda la aplicación. La clase Variables tiene un método de clase print_autor que imprime el valor de $author al ser llamado.
❗Este tipo de variable no persiste el dato asignado al inicio de la declaración, es decir que le podemos asignar otro valor en cualquier parte del flujo de nuestro programa.
⭐ Variables de Instancia
Estas variables son las que hacen referencia a las propiedades de una clase. Es decir que son las variables que viven unicamente en la instancia de una clase. Para declarar una variable de instancia usamos el carácter @ inicialmente, luego definimos el nombre de la variable.
A continuación un ejemplo:
class Song
def initialize(name: nil, genre: nil, artist: nil)
# Definición de variables de instancia
@name = name
@genre = genre
@artist = artist
end
def details
puts "Detalles de la canción"
puts "Nombre: #{@name}"
puts "Genero: #{@genre}"
puts "Artista: #{@artist}"
end
end
# Instancia de clase
first_song = Song.new(
name: "Puro Cuento",
genre: "Carranga",
artist: "Heredero"
)
first_song.details
Este código define una clase Song con un constructor que inicializa variables de instancia (@name, @genre, @artist). El método details imprime esos valores. Luego, crea una instancia de Song y muestra sus detalles.
❗Si nosotros intentamos llamar una variable de instancia fuera de la clase, nos devuelve nil o nulo.
⭐ Variables de clase
Estas variables No pertenecen a la instancia de la clase sino a la clase misma en si. Se definen con doble arroba (@@) luego del nombre.
Revisemos el siguiente ejemplo:
class Game
@@map = "lost land"
def get_map_name
puts "Playing in map: #{@@map}"
end
end
# Instancia de clase
team1 = Game.new
team2 = Game.new
# Llamando métodos
team1.get_map_name
team2.get_map_name
El código define una clase Game con una variable de clase @@map compartida por todas las instancias. El método get_map_name imprime el valor de @@map. Las instancias team1 y team2 llaman al método, mostrando el mismo mapa “lost land”.
Las variables de clase (@@variable) son compartidas entre todas las instancias de una clase. Se definen con @@ y permiten almacenar valores comunes a todas las instancias. Son útiles para datos globales dentro de la clase, como contadores o configuraciones.
⭐ Variables locales
Estas variables no tienen un caracter en concreto para definirlas sino unicamente el nombre que se les quiere dar.
Revisemos el siguiente ejemplo:
def greet(name)
greeting = "Hello, #{name}!" # Variable local
puts greeting
end
greet("Carlos")
Las variables locales se definen dentro de un método o bloque y solo son accesibles en ese contexto. En el ejemplo, greeting es una variable local dentro del método greet. Solo puede usarse dentro de ese método y no fuera de él.
Son cómo las variables let en JavaScript.
⭐ Variables de tipo constante
Finalmente, tenemos las constantes las cuales definimos con un nombre en mayúsculas.
Revisemos el siguiente ejemplo:
PI = 3.14
COUNTRY = "Colombia"
Las constantes son definidas con letras mayúsculas (como PI y COUNTRY), se usan para almacenar valores que no deberían cambiar durante la ejecución del programa. En el ejemplo, PI almacena el valor de Pi y COUNTRY guarda el nombre de un país. Aunque no son estrictamente inmutables, se recomienda no modificarlas.
Así es como funcionan las variables en Ruby, ¡y si has llegado hasta aquí, ya eres un crack manejando variables y entendiendo cómo funcionan! 💪🚀
Ahora tienes todo lo necesario para dominar Ruby como un experto. 🎯💻