Ruby Academy · leksjon

Åpne klasser og monkey patching

Utforsk hvordan Ruby lar deg endre eksisterende klasser og legge til ny funksjonalitet.

Leksjon 3 av 410 trinn

Åpne klasser og monkey patching er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 3 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.

Endre klasser under kjøring

Åpne klasser og monkey patching

Ruby gjør det mulig å endre eksisterende klasser under kjøring.

Denne funksjonen, som kalles «Open Classes», lar utviklere utvide eller endre atferd dynamisk.

Åpne klasser og monkey patching — illustrasjon 1

Hva er åpne klasser?

I Ruby kan du åpne eksisterende klasser på nytt og endre dem.

Dette gjør det mulig å legge til nye metoder i innebygde eller brukerdefinerte klasser.

Legge til metoder i en eksisterende klasse

Definer ganske enkelt en klasse på nytt, og legg til nye metoder.

class String
  def shout
    self.upcase + '!!!'
  end
end

puts 'hello'.shout

Overstyre metoder (monkey patching)

Du kan overstyre eksisterende metoder i Ruby-klasser.

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

puts 'hello'.reverse

Beholde den opprinnelige metoden med super

Bruk super for å beholde den opprinnelige metodens atferd.

class String
  def reverse
    super + ' (custom behavior added)'
  end
end

puts 'hello'.reverse

Bruksområder for åpne klasser

Åpne klasser er nyttige i ulike situasjoner:

  • Utvide innebygde klasser med flere metoder.
  • Forbedre tredjepartsbiblioteker.
  • Gjøre koden mer lesbar og enklere å vedlikeholde.

Risikoer ved monkey patching

Monkey patching kan være farlig hvis det ikke brukes med forsiktighet.

  • Uventet atferd ved endring av kjer­neklasser.
  • Mulige konflikter med tredjepartsbiblioteker.
  • Vanskeligere feilsøking og vedlikehold.

Alternativer til monkey patching

I stedet for å endre global oppførsel kan du vurdere å bruke refinements.

Refinements gjør det mulig å endre klasser innenfor et begrenset omfang.

module StringExtensions
  refine String do
    def shout
      upcase + '!!!'
    end
  end
end

using StringExtensions
puts 'hello'.shout

Oppsummering av Open Classes

Gratulerer!

Du har lært hvordan du kan endre eksisterende klasser ved hjelp av Open Classes og monkey patching.

Deretter skal du utforske hvordan du kan bruke send og eval til dynamisk kjøring av metoder.

Åpne klasser og monkey patching — illustrasjon 10
Gratis å komme i gang

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 «Åpne klasser og monkey patching» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Åpne klasser og monkey patching», 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 «Åpne klasser og monkey patching»?

Utforsk hvordan Ruby lar deg endre eksisterende klasser og legge til ny funksjonalitet. 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 3 av 4.

Hvor lang tid tar leksjonen «Åpne klasser og monkey patching»?

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.

Alle leksjonene i dette kurset

  1. Hva er metaprogrammering?
  2. Dynamisk metodedefinisjon
  3. Åpne klasser og monkey patching
  4. Bruk av send og eval
← Tilbake til Ruby Academy