Forskjellen mellom Inkluder & Extend i Ruby

Programmeringsspråket Ruby har et par måter å kombinere metodene i to klasser. Klassene er samlinger av beslektede metoder og data medlemmer. To klasser kan kombinere sine metoder ved hjelp av blant annet eller utvide uttalelser. Begge disse påstandene er spesialisert for et annet formål og utføre forskjellige ting.

klasse~~POS=TRUNC

Utvid legger spesifiserte moduler metoder som klassemetoder til målet klassen. Klassemetoder er tilgjengelig for alle forekomster av målet klassen. Det betyr at alle objekter som er opprettet på grunnlag av målet klasse har tilgang til fremgangsmåtene ifølge en hvilken som helst klasse som er utvidet. Derfor strekker er en mer universell måte å inkludere metoder i en klasse, siden det påvirker alle forekomster av den klassen.

instansmetoder

Inkluder legger spesifiserte moduler metoder som instansmetoder til målet klassen. Instansmetoder er bare tilgjengelige for det spesifikke tilfellet av målet klassen. Enhver annen klasse av samme type som ikke har tilgang til fremgangsmåtene i den klasse som er inkludert, med mindre det også har den omfatte fremgangsmåten startes på den.

variabel tilgang

Et mål klasse har tilgang til variablene i en hvilken som helst annen klasse som har blitt inkludert. Utvid gir ikke denne tilgangen.

Offentlig versus privat

Inkluder er en privat metode, og strekker seg er en offentlig metode. Dette betyr at inkludere må påberopes innen en klasse kropp.