window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Ruby 3.0. Ruby ja vähemmän tunnetut yksityisyyden valvontamenetelmät - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2021-01-28
Ohjelmistokehitys

Ruby 3.0. Ruby ja vähemmän tunnetut yksityisyyden valvontamenetelmät

Codest

Tomasz Szkaradek

Kehitysarkkitehti

Yksi Rubyn rakastetuimmista ominaisuuksista on sen erittäin joustava syntaksi. Itse rakastan Rubya sen vuoksi, miten paljon mahdollisuuksia meillä on määritellä luokkia ja niiden ominaisuuksia, ja juuri tätä aion käsitellä tässä artikkelissa.

Perusratkaisut

Oletetaan, että käytämme luokkaa Foo, jolla on yksi julkinen metodi ja yksi yksityinen metodi:

luokka Foo
  def bar
    :awesome
  end

  private

  def baz
    :jotain_yksityistä
  end
end

Kaikki on hienoa, näemme tällaisen ratkaisun lähes jokaisessa projekti. Käynnissä Foo.new.baz aiheuttaa virheen NoMethodError (yksityinen menetelmä 'baz' kutsuttu #:lle ) ja niin meidän oli tarkoitus tehdä. Mitä tapahtuu, jos yritämme muuttaa tallennusmuotoa ja lisätä luokan määritelmään etuliitteen private?

luokka Foo
  def bar
    :awesome
  end

  private def baz
    :jotain_yksityistä
  end
end

Kuten näet, kun olet suorittanut koodi, se todella toimii! Miksi voimme syöttää menetelmän näkyvyyden ennen sen tekemistä? Koska metodia määritettäessä def palauttaa metodin nimen symbolina. Tämä lauseke ei ole vain osa syntaksia, vaan de facto menetelmä, joka on johdettu Module-luokasta ja joka käsittelee tätä symbolia argumenttina. Lisätietoja on dokumentaatiossa tässä linkissä. Koska se alkoi niin helposti private-metodilla, yritetään muuttaa private-metodin näkyvyyttä.

luokka Foo
  def bar
    :awesome
  end

  private def baz
    :jotain_yksityistä
  end

  public :baz
end

Mitä tapahtuu koodin suorittamisen jälkeen?

irb(main):012:0> Foo.new.baz
=> :jotain_yksityistä

Menestys! Perusmenetelmämme tuli julkiseksi, koska teimme sen näkyväksi kahdesti. Sama toiminto pätee tietysti myös moduuleihin.
​
Hienoa, mutta mihin se johtaa?
​
Tämä toiminnallisuus antaa meille paljon, koska voimme vapaasti muuttaa metodin näkyvyyttä määriteltäessä sitä tai jopa muuttaa metodien näkyvyyttä periytettäessä niitä.

Katsotaanpa nyt, mitä Ruby 2.7 voi tehdä aliasien ja accessoreiden näkyvyyden muuttamisen suhteen.

luokka Foo
  private attr_accessor :awesome_variable
end

Valitettavasti saamme virheen, koska yksityinen menetelmä odottaa symboleja ja attr_accessoria. Koodi palauttaa nil:n, joten tämä metodi ei ole yhteensopiva Ruby 2.7:n private-käytön kanssa. Mitkä ovat siis vaihtoehtomme?

  1. Voimme käyttää attr_accessoria private-avainsanan alla saadaksemme sen toimimaan, eli saamme virheen, kun haluamme viitata avainsanaan mahtava_muuttuja mahtava_muuttuja menetelmä.
luokka Foo
  private

  attr_accessor :awesome_variable
end
  1. Toinen vaihtoehto on suorittaa yksityinen metodi metodeissa, jotka on luotu attr_attribuutti; tässä tapauksessa meidän on myös muistettava syöttää asetin sinne.
luokka Foo
  attr_accessor :awesome_variable

  private :awesome_variable, :awesome_variable=
end

Ongelmat attr_ * menetelmät eivät ole ainoat esteet. Samaan vaikeuteen törmäämme, kun haluamme luoda yksityisen aliaksen.

luokka Foo
  private alias :bar, :awesome_bar
end

Ruby 3.0 ja liiketoimintamme

Onneksi Ruby 3.0 tuo suuren muutoksen, sillä näkyvyysmetodit voivat ottaa argumenttina array:n ja metodien alias, attr_ *, voi nollata array:n määritettyjen metodien nimillä. Voit lukea lisää täällä.

Katsotaanpa nyt muutamia esimerkkejä uusimmasta eubasta ja tarkistetaan, onko muutokset todella tehty ja miten voimme käyttää niitä.
​
Ensimmäisessä esimerkissä käytetään private ennen attr-käyttäjää:

luokka Foo
  private attr_accessor :awesome_variable
end

Tällainen kutsu ei aiheuta virheitä syntaksin jäsentämisessä ja, mikä on tärkeää, että awesome_variable jaawesome_variable =menetelmistä tulee yksityisiä.
​
Alias-metodi tekee saman, mutta nyt se myös palauttaa symbolin uuden metodin nimeksi ja tekee sen näkyväksi.

luokka Foo
  private alias :bar, :awesome_bar
end

Mielenkiintoinen seikka on, että voimme myös syventyä muihin menetelmiin, esimerkiksi mahtavaantulostusmoduulia voidaan kutsua private- ja attr-moduulien välillä.lukija; on tärkeää, että tällainen metodi palauttaa joukon, jossa on lausekkeen oikealla puolella olevien metodien nimet.

luokka Module
  def awesome_print(nimet)
    puts names
    names
  end
end
luokka Foo
  private awesome_print attr_reader :awesome_bar
end 

Yhteenveto

Toivottavasti löydät tämän artikkelin hyödylliseksi! Jos haluat lisätietoja Ruby 3.0:sta, lue lisää. täällä.

Hyvää koodausta!

Ruby-kehittäjä Tarjous

Lue lisää:

Turpa kiinni ja ota rahasi #1: Tuotekehitysprosessin piilokustannukset ja todellinen ketteryys

CTO:n haasteet - ohjelmistotuotteiden skaalautuminen ja kasvu

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

    fiFinnish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fiFinnish