Avoimet luokat ja monkey patching
Tutustutte siihen, miten Ruby mahdollistaa olemassa olevien luokkien muokkaamisen ja uuden toiminnallisuuden lisäämisen.
Avoimet luokat ja monkey patching on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.
Luokkien muokkaaminen suorituksen aikana
Avoimet luokat ja monkey patching
Ruby mahdollistaa olemassa olevien luokkien muokkaamisen suorituksen aikana.
Tämä ominaisuus, jota kutsutaan avoimiksi luokiksi, mahdollistaa toiminnan laajentamisen tai muuttamisen dynaamisesti.

Mitä avoimet luokat ovat?
Rubyssa voitte avata olemassa olevia luokkia uudelleen ja muokata niitä.
Tämän ansiosta sisäänrakennettuihin tai käyttäjän määrittämiin luokkiin voi lisätä uusia metodeja.
Metodien lisääminen olemassa olevaan luokkaan
Määritelkää luokka yksinkertaisesti uudelleen ja lisätkää siihen uusia metodeja.
class String
def shout
self.upcase + '!!!'
end
end
puts 'hello'.shoutMetodien ohittaminen (monkey patching)
Voitte ohittaa Ruby-luokkien olemassa olevia metodeja.
class String
def reverse
'Reversed method overridden!'
end
end
puts 'hello'.reverseAlkuperäisen metodin säilyttäminen <code>super</code>-komennolla
Käyttäkää komentoa super säilyttääksenne alkuperäisen metodin toiminnan.
class String
def reverse
super + ' (custom behavior added)'
end
end
puts 'hello'.reverseAvoimien luokkien käyttötapaukset
Avoimet luokat ovat hyödyllisiä monissa tilanteissa:
- Sisäänrakennettujen luokkien laajentaminen lisämetodeilla.
- Kolmannen osapuolen kirjastojen parantaminen.
- Luettavuuden ja ylläpidettävyyden parantaminen.
Monkey patching -tekniikan riskit
Monkey patching voi olla vaarallista, jos sitä ei käytetä harkiten.
- Odottamaton toiminta ydinkoodin luokkia muokattaessa.
- Mahdolliset ristiriidat kolmannen osapuolen kirjastojen kanssa.
- Vaikeampi virheenkorjaus ja ylläpidettävyys.
Vaihtoehtoja Monkey Patchingille
Globaalin toiminnan muokkaamisen sijaan harkitkaa refinement-ominaisuuksien käyttöä.
Refinementit mahdollistavat luokkien muokkaamisen rajatussa laajuudessa.
module StringExtensions
refine String do
def shout
upcase + '!!!'
end
end
end
using StringExtensions
puts 'hello'.shoutOpen Classes -kertaus
Onnittelut!
Olette oppinut muokkaamaan olemassa olevia luokkia Open Classes- ja Monkey Patching -tekniikoilla.
Seuraavaksi tutustutte send- ja eval-metodien käyttämiseen dynaamisessa metodien suorituksessa.

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 ”Avoimet luokat ja monkey patching” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Avoimet luokat ja monkey patching”. 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 ”Avoimet luokat ja monkey patching”?
Tutustutte siihen, miten Ruby mahdollistaa olemassa olevien luokkien muokkaamisen ja uuden toiminnallisuuden lisäämisen. 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 3/4.
Kuinka kauan ”Avoimet luokat ja monkey patching”-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
- Mitä metaprogrammointi on?
- Metodien dynaaminen määrittäminen
- Avoimet luokat ja monkey patching
- sendin ja evalin käyttäminen