Definiowanie modułów
Przestrzenie nazw i metody
Definiowanie modułów to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Przestrzenie nazw i metody
Moduł to kontener na metody i stałe. W przeciwieństwie do klasy nie można utworzyć instancji modułu. Moduły pełnią dwie funkcje: grupują kod (tworzą przestrzenie nazw) i współdzielą zachowanie (jako miksiny).
module Greeter
def self.hello
"Hello from the module"
end
end
puts Greeter.helloMetody modułu
Zdefiniuj metodę z użyciem self., aby wywoływać ją bezpośrednio na module, podobnie jak funkcję narzędziową. Takie metody często nazywa się funkcjami modułu.
module MathTools
def self.square(x)
x * x
end
end
puts MathTools.square(7)Stałe modułu
Moduły mogą również przechowywać stałe. Dostęp do nich uzyskuje się za pomocą operatora zakresu ::.
module Physics
GRAVITY = 9.81
end
puts Physics::GRAVITYUmieszczanie klas w przestrzeni nazw
Umieszczaj klasy w module, aby uniknąć kolizji nazw. Pełna nazwa korzysta z operatora ::.
module Store
class Item
def initialize(name)
@name = name
end
def to_s
@name
end
end
end
puts Store::Item.new("Book")Dlaczego przestrzenie nazw mają znaczenie
Dwie biblioteki mogą definiować obiekt Logger. Przestrzenie nazw rozdzielają je od siebie: Audio::Logger i Network::Logger nigdy nie wejdą ze sobą w konflikt.
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 sprawia, że następujące po nim metody można wywoływać zarówno na module, jak i jako prywatne metody instancji po dołączeniu modułu. Eliminuje to konieczność powtarzania self..
module Calc
module_function
def add(a, b)
a + b
end
end
puts Calc.add(2, 3)Grupowanie powiązanych stałych
Moduły świetnie nadają się do porządkowania powiązanych wartości konfiguracyjnych pod jedną czytelną nazwą.
module Color
RED = "#FF0000"
GREEN = "#00FF00"
BLUE = "#0000FF"
end
puts Color::GREENZagnieżdżone moduły
Moduły można zagnieżdżać w innych modułach, aby uzyskać bardziej szczegółową organizację kodu.
module App
module Config
VERSION = "1.0"
end
end
puts App::Config::VERSIONWyświetlanie zawartości modułu
Metody refleksji pozwalają sprawdzać w czasie działania programu stałe i metody modułu.
module Settings
WIDTH = 80
HEIGHT = 24
end
p Settings.constantsModułów nie można instancjonować
Próba użycia Module.new w stylu nazwanego modułu kończy się niepowodzeniem, ponieważ moduł nie ma konstruktora instancji. Moduł jest przestrzenią nazw i kontenerem zachowania, a nie schematem do tworzenia obiektów.
module Tools
end
begin
Tools.new
rescue NoMethodError => e
puts "Cannot instantiate: #{e.message}"
endSkładanie wszystkiego w całość
Moduły porządkują kod i umożliwiają współdzielenie go:
- Używaj
self.methoddo definiowania wywoływalnych funkcji modułu. - Przechowuj w nich stałe, do których dostęp uzyskuje się za pomocą
::. - Umieszczaj klasy w przestrzeniach nazw, aby zapobiegać kolizjom.
- Modułu nie można instancjonować.
module Geometry
PI = 3.14159
def self.circle_area(r)
PI * r * r
end
end
puts Geometry.circle_area(2)Szybki test
Proszę sprawdzić swoją znajomość modułów.
Podsumowanie
Omówiono definiowanie modułów:
- Moduły grupują metody i stałe.
self.methoddefiniuje wywoływalne funkcje modułu.::zapewnia dostęp do stałych i zagnieżdżonych klas.- Przestrzenie nazw zapobiegają kolizjom nazw.
module Util
def self.shout(s)
s.upcase + "!"
end
end
puts Util.shout("ruby")Często zadawane pytania
Czy lekcja „Definiowanie modułów” jest bezpłatna?
Tak — pełny tekst „Definiowanie modułów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Definiowanie modułów”?
Przestrzenie nazw i metody Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Definiowanie modułów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Definiowanie modułów
- include i extend
- Comparable i Enumerable
- prepend i wyszukiwanie metod