Porți de rază de acțiune în Ruby: Partea I

.

Mehdi Farsi

Follow

Sep 2, 2019 – 3 min citește

În acest articol, vom explora următoarele subiecte:

  • domeniul de aplicare a metodelor
  • domeniul de aplicare a claselor
  • Înainte de a începe

    Sunt încântat să vă împărtășesc cel mai recent proiect al nostru: Fun Facts about Ruby – Volume 1

    Vă rugăm să nu ezitați să răspândiți vestea și să distribuiți această postare! 🙏

    Mulțumim pentru timpul acordat!

    În Ruby, domeniul de aplicare al unui program este strâns corelat cu valoarea lui self.

    Aici vom detalia care sunt valorile lui self atunci când ne aflăm într-o metodă, într-o clasă și în domeniul de aplicare de nivel superior.

    Scopul metodei

    În Ruby, domeniul de nivel superior este contextul obiectului main.

    De fapt, self se referă la obiectul main în acest moment.

    Nu ezitați să citiți articolul Ruby Object Model dacă nu sunteți familiarizați cu obiectul main.

    Acum, care este contextul lui self în cadrul unei metode definite în domeniul de aplicare de nivel superior?

    Aici putem vedea că self se referă, de asemenea, la obiectul main.

    Singura diferență este că noi nu avem acces la variabilele locale declarate în domeniul de aplicare de nivel superior în cadrul metodei noastre.

    Aceasta se datorează faptului că cuvântul cheie def înglobează conținutul metodei într-un domeniu de aplicare complet izolat.

    Cu toate acestea, metoda noastră poate accesa variabilele de instanță declarate în domeniul de aplicare de nivel superior.

    De fapt, deoarece variabilele de instanță sunt declarate la nivel de obiect, atunci putem accesa aceste variabile într-un alt domeniu de aplicare în care self se referă la același obiect – obiectul main în cazul nostru.

    Deci, deoarece self indică main fie în domeniul de aplicare de nivel superior, fie în metoda definită în domeniul de aplicare de nivel superior, putem accesa variabila de instanță @instance_variable în metoda hello.

    Class scope

    Când folosim cuvântul cheie class:

    • Valoarea lui self se schimbă
    • Conținutul clasei este încorporat într-un domeniu izolat

    Să ne uităm la următorul exemplu

    Aici putem vedea că în clasa noastră self are o valoare diferită – se referă la clasa Hello.

    De asemenea, nu avem acces la variabilele și metodele definite în afara clasei.

    Rețineți că avem acces la variabilele de instanță în metodele de instanță din aceleași motive descrise în prima secțiune a articolului.

    În partea a II-a & a III-a, ne vom juca cu domeniile de cuprindere folosind module, clase imbricate și blocuri (FLAT SCOPES).

    Voilà !

    Lasă un răspuns

    Adresa ta de email nu va fi publicată.