Definire moduli
Namespace e metodi
Definire moduli è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Namespace e metodi
Un modulo è un contenitore per metodi e costanti. A differenza di una classe, non è possibile creare un'istanza di un modulo. I moduli hanno due ruoli: raggruppare il codice (namespacing) e condividere il comportamento (mixin).
module Greeter
def self.hello
"Hello from the module"
end
end
puts Greeter.helloMetodi dei moduli
Definendo un metodo con self. è possibile chiamarlo direttamente sul modulo, come una funzione di utilità. Questi metodi sono spesso chiamati funzioni di modulo.
module MathTools
def self.square(x)
x * x
end
end
puts MathTools.square(7)Costanti dei moduli
I moduli possono contenere anche costanti. Vi si accede con l'operatore di ambito ::.
module Physics
GRAVITY = 9.81
end
puts Physics::GRAVITYCreare namespace per le classi
Racchiuda le classi in un modulo per evitare conflitti tra nomi. Il nome completo usa ::.
module Store
class Item
def initialize(name)
@name = name
end
def to_s
@name
end
end
end
puts Store::Item.new("Book")Perché i namespace sono importanti
Due librerie potrebbero definire entrambe un Logger. I namespace le mantengono separate: Audio::Logger e Network::Logger non entrano mai in conflitto.
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 rende i metodi seguenti invocabili sia sul modulo sia come metodi di istanza privati quando il modulo viene incluso. Evita di ripetere self..
module Calc
module_function
def add(a, b)
a + b
end
end
puts Calc.add(2, 3)Raggruppare costanti correlate
I moduli sono ottimi per organizzare valori di configurazione correlati sotto un unico nome chiaro.
module Color
RED = "#FF0000"
GREEN = "#00FF00"
BLUE = "#0000FF"
end
puts Color::GREENModuli annidati
I moduli possono essere annidati all'interno di altri moduli per un'organizzazione più approfondita.
module App
module Config
VERSION = "1.0"
end
end
puts App::Config::VERSIONElencare i contenuti di un modulo
I metodi di reflection permettono di esaminare le costanti e i metodi di un modulo durante l'esecuzione.
module Settings
WIDTH = 80
HEIGHT = 24
end
p Settings.constantsI moduli non possono essere istanziati
Provare Module.new con la sintassi di un modulo denominato non va a buon fine, perché un modulo non ha un costruttore per le istanze. È un namespace e un contenitore di comportamento, non un modello per gli oggetti.
module Tools
end
begin
Tools.new
rescue NoMethodError => e
puts "Cannot instantiate: #{e.message}"
endMettere tutto insieme
I moduli organizzano e condividono il codice:
- Usi
self.methodper creare funzioni di modulo invocabili. - Contengono costanti a cui si accede con
::. - Creano namespace per le classi, evitando i conflitti.
- Non è possibile istanziare un modulo.
module Geometry
PI = 3.14159
def self.circle_area(r)
PI * r * r
end
end
puts Geometry.circle_area(2)Verifica rapida
Verifichi la comprensione dei moduli.
Riepilogo
Ha imparato a definire i moduli:
- I moduli raggruppano metodi e costanti.
self.methoddefinisce funzioni di modulo invocabili.::consente di accedere a costanti e classi annidate.- Il namespacing previene i conflitti tra nomi.
module Util
def self.shout(s)
s.upcase + "!"
end
end
puts Util.shout("ruby")Domande Frequenti
La lezione «Definire moduli» è gratuita?
Sì — il testo completo di «Definire moduli» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Definire moduli»?
Namespace e metodi Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Definire moduli»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.