Definere moduler
Navnerom og metoder
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.helloModulmetoder
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::GRAVITYNavnerom 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.namemodule_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::GREENNestede moduler
Moduler kan ligge inni andre moduler for en mer detaljert organisering.
module App
module Config
VERSION = "1.0"
end
end
puts App::Config::VERSIONListe 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.constantsModuler 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}"
endSamlet oversikt
Moduler organiserer og deler kode:
- Bruk
self.methodfor 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.methoddefinerer 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")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.