0Pricing
Ruby Academy · Lección

Definición de módulos

Espacios de nombres y métodos

Definición de módulos es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

Espacios de nombres y métodos

Un módulo es un contenedor de métodos y constantes. A diferencia de una clase, no puede crear una instancia de un módulo. Los módulos cumplen dos funciones: agrupar código mediante espacios de nombres y compartir comportamiento mediante mixins.

module Greeter
  def self.hello
    "Hello from the module"
  end
end
puts Greeter.hello

Métodos de módulo

Defina un método con self. para llamarlo directamente en el módulo, como una función de utilidad. A menudo se denominan funciones de módulo.

module MathTools
  def self.square(x)
    x * x
  end
end
puts MathTools.square(7)

Constantes de módulo

Los módulos también contienen constantes. Acceda a ellas mediante el operador de resolución de ámbito ::.

module Physics
  GRAVITY = 9.81
end
puts Physics::GRAVITY

Espacios de nombres para clases

Incluya las clases en un módulo para evitar conflictos de nombres. El nombre completo utiliza ::.

module Store
  class Item
    def initialize(name)
      @name = name
    end
    def to_s
      @name
    end
  end
end
puts Store::Item.new("Book")

Por qué importan los espacios de nombres

Dos bibliotecas podrían definir ambas un Logger. Los espacios de nombres las mantienen separadas: Audio::Logger y Network::Logger nunca entran en conflicto.

module Audio
  class Logger
    def name; "audio logger"; end
  end
end
module Network
  class Logger
    def name; "network logger"; end
  end
end
puts Audio::Logger.new.name
puts Network::Logger.new.name

module_function

module_function hace que los métodos siguientes puedan llamarse tanto en el módulo como métodos de instancia privados cuando se mezclan. Evita repetir self..

module Calc
  module_function
  def add(a, b)
    a + b
  end
end
puts Calc.add(2, 3)

Agrupar constantes relacionadas

Los módulos son excelentes para organizar valores de configuración relacionados bajo un único nombre claro.

module Color
  RED = "#FF0000"
  GREEN = "#00FF00"
  BLUE = "#0000FF"
end
puts Color::GREEN

Módulos anidados

Los módulos pueden anidarse dentro de otros módulos para lograr una organización más profunda.

module App
  module Config
    VERSION = "1.0"
  end
end
puts App::Config::VERSION

Enumerar el contenido de un módulo

Los métodos de reflexión permiten inspeccionar las constantes y los métodos de un módulo en tiempo de ejecución.

module Settings
  WIDTH = 80
  HEIGHT = 24
end
p Settings.constants

Los módulos no se pueden instanciar

Intentar usar Module.new como si se tratara de un módulo con nombre falla porque un módulo no tiene un constructor para instancias. Es un espacio de nombres y un contenedor de comportamiento, no un modelo para crear objetos.

module Tools
end
begin
  Tools.new
rescue NoMethodError => e
  puts "Cannot instantiate: #{e.message}"
end

Cómo encaja todo

Los módulos organizan y comparten código:

  • Use self.method para definir funciones de módulo que se puedan llamar.
  • Contienen constantes a las que se accede mediante ::.
  • Crean espacios de nombres para las clases con el fin de evitar conflictos.
  • No puede crear una instancia de un módulo.
module Geometry
  PI = 3.14159
  def self.circle_area(r)
    PI * r * r
  end
end
puts Geometry.circle_area(2)

Comprobación rápida

Compruebe su comprensión de los módulos.

Repaso

Ha aprendido a definir módulos:

  • Los módulos agrupan métodos y constantes.
  • self.method define funciones de módulo que se pueden llamar.
  • :: permite acceder a constantes y clases anidadas.
  • Los espacios de nombres evitan conflictos de nombres.
module Util
  def self.shout(s)
    s.upcase + "!"
  end
end
puts Util.shout("ruby")

Preguntas frecuentes

¿La lección «Definición de módulos» es gratis?

Sí — el texto completo de «Definición de módulos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Definición de módulos»?

Espacios de nombres y métodos Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Definición de módulos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Definición de módulos
  2. include y extend
  3. Comparable y Enumerable
  4. prepend y resolución de métodos
← Volver a Ruby Academy