0Pricing
Ruby Academy · Lezione

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.hello

Metodi 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::GRAVITY

Creare 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.name

module_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::GREEN

Moduli 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::VERSION

Elencare 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.constants

I 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}"
end

Mettere tutto insieme

I moduli organizzano e condividono il codice:

  • Usi self.method per 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.method definisce 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.

Tutte le lezioni di questo corso

  1. Definire moduli
  2. include e extend
  3. Comparable ed Enumerable
  4. prepend e risoluzione dei metodi
← Torna a Ruby Academy