Moduulien määrittely
Nimiavaruudet ja metodit.
Moduulien määrittely on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
Nimiavaruudet ja metodit
Moduuli on metodien ja vakioiden säilö. Toisin kuin luokasta, moduulista ei voi luoda ilmentymää. Moduuleilla on kaksi tehtävää: koodin ryhmittely eli nimiavaruuksien luominen ja toiminnallisuuden jakaminen mixinien avulla.
module Greeter
def self.hello
"Hello from the module"
end
end
puts Greeter.helloModuulimetodit
Määritelkää metodi käyttämällä self.-etuliitettä, jotta sitä voidaan kutsua suoraan moduulista apufunktion tapaan. Näitä kutsutaan usein moduulifunktioiksi.
module MathTools
def self.square(x)
x * x
end
end
puts MathTools.square(7)Moduulivakiot
Moduulit sisältävät myös vakioita. Käyttäkää niitä scope-operaattorilla ::.
module Physics
GRAVITY = 9.81
end
puts Physics::GRAVITYLuokkien sijoittaminen nimiavaruuksiin
Ympäröikää luokat moduulilla, jotta nimien törmäyksiltä vältytään. Koko nimi käyttää ::-operaattoria.
module Store
class Item
def initialize(name)
@name = name
end
def to_s
@name
end
end
end
puts Store::Item.new("Book")Miksi nimiavaruudet ovat tärkeitä
Kaksi kirjastoa voi määritellä kumpikin oman Logger-luokkansa. Nimiavaruudet pitävät ne erillään: Audio::Logger ja Network::Logger eivät koskaan törmää toisiinsa.
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 tekee seuraavista metodeista kutsuttavia sekä moduulista että yksityisinä instanssimetodeina, kun moduuli otetaan mixiniksi. Näin self.-etuliitettä ei tarvitse toistaa.
module Calc
module_function
def add(a, b)
a + b
end
end
puts Calc.add(2, 3)Aiheeseen liittyvien vakioiden ryhmittely
Moduulit sopivat erinomaisesti toisiinsa liittyvien määritysarvojen järjestämiseen yhden selkeän nimen alle.
module Color
RED = "#FF0000"
GREEN = "#00FF00"
BLUE = "#0000FF"
end
puts Color::GREENSisäkkäiset moduulit
Moduuleja voi sijoittaa toisten moduulien sisään rakenteen järjestämiseksi tarkemmin.
module App
module Config
VERSION = "1.0"
end
end
puts App::Config::VERSIONModuulin sisällön luetteleminen
Reflektiometodien avulla voitte tarkastella moduulin vakioita ja metodeja suorituksen aikana.
module Settings
WIDTH = 80
HEIGHT = 24
end
p Settings.constantsModuuleista ei voi luoda ilmentymiä
Nimetyn moduulin käsitteleminen Module.new-kutsulla epäonnistuu, koska moduulilla ei ole ilmentymien luomiseen tarkoitettua konstruktoria. Se on nimiavaruus ja toiminnallisuuden säilö, ei olioiden mallipohja.
module Tools
end
begin
Tools.new
rescue NoMethodError => e
puts "Cannot instantiate: #{e.message}"
endKootaan yhteen
Moduulit järjestävät ja jakavat koodia:
- Käyttäkää
self.method-syntaksia kutsuttavien moduulifunktioiden määrittämiseen. - Säilyttäkää vakioita, joita käytetään
::-operaattorilla. - Sijoittakaa luokat nimiavaruuksiin törmäysten estämiseksi.
- Moduulista ei voi luoda ilmentymää.
module Geometry
PI = 3.14159
def self.circle_area(r)
PI * r * r
end
end
puts Geometry.circle_area(2)Pikatesti
Testatkaa, miten hyvin ymmärrätte moduulit.
Kertaus
Opitte määrittämään moduuleja:
- Moduulit ryhmittelevät metodeja ja vakioita.
self.methodmäärittää kutsuttavia moduulifunktioita.::käsittelee vakioita ja sisäkkäisiä luokkia.- Nimiavaruudet estävät nimien törmäykset.
module Util
def self.shout(s)
s.upcase + "!"
end
end
puts Util.shout("ruby")Opi Ruby tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 29
- Oppitunnit
- 109
Usein kysytyt kysymykset
Onko oppitunti ”Moduulien määrittely” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Moduulien määrittely”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Moduulien määrittely”?
Nimiavaruudet ja metodit. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Moduulien määrittely”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Ruby Academy-oppitunnilla?
Kyllä. Jokainen Ruby Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Moduulien määrittely
- include ja extend
- Comparable ja Enumerable
- prepend ja metodien ratkaisu