Ruby Academy · leksjon

Definere moduler

Navnerom og metoder

Leksjon 1 av 413 trinn

Definere moduler er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Navnerom og metoder

En modul er en beholder for metoder og konstanter. I motsetning til en klasse kan du ikke opprette en instans av en modul. Moduler har to roller: å gruppere kode (navnerom) og å dele oppførsel (mixins).

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

Modulmetoder

Definer en metode med self. for å kunne kalle den direkte på modulen, omtrent som en hjelpefunksjon. Disse kalles ofte modulfunksjoner.

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

Modulkonstanter

Moduler kan også inneholde konstanter. Du får tilgang til dem med scope-operatoren ::.

module Physics
  GRAVITY = 9.81
end
puts Physics::GRAVITY

Navnerom for klasser

Legg klasser i en modul for å unngå navnekollisjoner. Det fullstendige navnet bruker ::.

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

Hvorfor navnerom er viktige

To biblioteker kan begge definere en Logger. Navnerom holder dem atskilt: Audio::Logger og Network::Logger kolliderer aldri.

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 gjør de følgende metodene kallbare både på modulen og som private instansmetoder når de blandes inn. Det gjør at du slipper å gjenta self..

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

Gruppere relaterte konstanter

Moduler egner seg godt til å organisere relaterte konfigurasjonsverdier under ett tydelig navn.

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

Nestede moduler

Moduler kan ligge inni andre moduler for en mer detaljert organisering.

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

Liste opp modulinnhold

Metoder for introspeksjon lar deg undersøke en moduls konstanter og metoder under kjøring.

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

Moduler kan ikke instansieres

Et forsøk på å bruke Module.new som en navngitt modultype mislykkes fordi en modul ikke har noen konstruktør for instanser. Den er et navnerom og en beholder for oppførsel, ikke en oppskrift på objekter.

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

Samlet oversikt

Moduler organiserer og deler kode:

  • Bruk self.method for kallbare modulfunksjoner.
  • Hold konstanter som nås med ::.
  • Gi klasser navnerom for å hindre kollisjoner.
  • Du kan ikke instansiere en modul.
module Geometry
  PI = 3.14159
  def self.circle_area(r)
    PI * r * r
  end
end
puts Geometry.circle_area(2)

Sjekk forståelsen

Test forståelsen din av moduler.

Oppsummering

Du har lært å definere moduler:

  • Moduler grupperer metoder og konstanter.
  • self.method definerer kallbare modulfunksjoner.
  • :: gir tilgang til konstanter og nestede klasser.
  • Navnerom hindrer navnekollisjoner.
module Util
  def self.shout(s)
    s.upcase + "!"
  end
end
puts Util.shout("ruby")
Gratis å komme i gang

Lær deg Ruby med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
29
Leksjoner
109

Ofte stilte spørsmål

Er leksjonen «Definere moduler» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Definere moduler», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Definere moduler»?

Navnerom og metoder Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Ruby Academy?

Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Definere moduler»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?

Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Definere moduler
  2. include og extend
  3. Comparable og Enumerable
  4. prepend og metoderekkefølge
← Tilbake til Ruby Academy