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.helloMé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::GRAVITYEspacios 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.namemodule_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::GREENMó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::VERSIONEnumerar 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.constantsLos 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}"
endCómo encaja todo
Los módulos organizan y comparten código:
- Use
self.methodpara 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.methoddefine 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
- Definición de módulos
- include y extend
- Comparable y Enumerable
- prepend y resolución de métodos