Ruby Academy · Oppitunti

Avoimet luokat ja monkey patching

Tutustutte siihen, miten Ruby mahdollistaa olemassa olevien luokkien muokkaamisen ja uuden toiminnallisuuden lisäämisen.

Oppitunti 3/410 vaihetta

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.

Avoimet luokat ja monkey patching — kuvitus 1

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'.shout

Metodien ohittaminen (monkey patching)

Voitte ohittaa Ruby-luokkien olemassa olevia metodeja.

class String
  def reverse
    'Reversed method overridden!'
  end
end

puts 'hello'.reverse

Alkuperä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'.reverse

Avoimien 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'.shout

Open 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.

Avoimet luokat ja monkey patching — kuvitus 10
Aloita maksutta

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

  1. Mitä metaprogrammointi on?
  2. Metodien dynaaminen määrittäminen
  3. Avoimet luokat ja monkey patching
  4. sendin ja evalin käyttäminen
← Takaisin: Ruby Academy