Ruby Academy · Les

Modules definiëren

Namespaces en methoden

Les 1 van 413 stappen

Modules definiëren is een gratis Ruby Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ruby Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ruby Academy bevat in totaal 4 lessen.

Naamruimten en methoden

Een module is een houder voor methoden en constanten. In tegenstelling tot een klasse kun je geen instantie van een module maken. Modules hebben twee functies: code groeperen (naamruimten) en gedrag delen (mixins).

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

Methoden van modules

Definieer een methode met self. om die rechtstreeks op de module aan te roepen, zoals een hulpfunctie. Deze worden vaak modulefuncties genoemd.

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

Constanten van modules

Modules bevatten ook constanten. Je benadert ze met de bereikoperator ::.

module Physics
  GRAVITY = 9.81
end
puts Physics::GRAVITY

Klassen van een naamruimte voorzien

Wikkel klassen in een module om naamconflicten te voorkomen. De volledige naam gebruikt ::.

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

Waarom naamruimten belangrijk zijn

Twee bibliotheken kunnen allebei een Logger definiëren. Naamruimten houden ze uit elkaar: Audio::Logger en Network::Logger botsen nooit.

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 maakt de daaropvolgende methoden zowel op de module als als privé-instantmethoden aanroepbaar wanneer ze worden opgenomen. Zo hoef je self. niet steeds te herhalen.

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

Gerelateerde constanten groeperen

Modules zijn ideaal om gerelateerde configuratiewaarden onder één duidelijke naam te ordenen.

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

Geneste modules

Modules kunnen in andere modules worden genest voor een diepere ordening.

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

De inhoud van een module weergeven

Met reflectiemethoden kun je de constanten en methoden van een module tijdens runtime bekijken.

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

Modules kunnen niet worden geïnstantieerd

Een poging om met Module.new een benoemde module te maken mislukt, omdat een module geen constructor voor instanties heeft. Een module is een naamruimte en houder voor gedrag, geen sjabloon voor objecten.

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

Alles samenbrengen

Modules ordenen en delen code:

  • Gebruik self.method voor aanroepbare modulefuncties.
  • Bewaar constanten die je met :: benadert.
  • Voorzie klassen van een naamruimte om conflicten te voorkomen.
  • Je kunt een module niet instantiëren.
module Geometry
  PI = 3.14159
  def self.circle_area(r)
    PI * r * r
  end
end
puts Geometry.circle_area(2)

Snelle controle

Controleer of je modules begrijpt.

Samenvatting

Je hebt geleerd modules te definiëren:

  • Modules groeperen methoden en constanten.
  • self.method definieert aanroepbare modulefuncties.
  • :: benadert constanten en geneste klassen.
  • Naamruimten voorkomen naamconflicten.
module Util
  def self.shout(s)
    s.upcase + "!"
  end
end
puts Util.shout("ruby")
Gratis beginnen

Leer Ruby met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
29
Lessen
109

Veelgestelde vragen

Is de les “Modules definiëren” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Ruby Academy, waaronder “Modules definiëren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Ruby Academy bevat in totaal 4 lessen.

Wat leer ik in “Modules definiëren”?

Namespaces en methoden Je oefent met Ruby Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Ruby Academy te beginnen?

Ervaring vooraf is niet nodig. Ruby Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Modules definiëren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Ruby Academy?

Ja. Elke les over Ruby Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Modules definiëren
  2. include en extend
  3. Comparable en Enumerable
  4. prepend en methoderesolutie
← Terug naar Ruby Academy