window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } 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ähemtuntud eraelu puutumatuse kontrolli meetodid - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-01-28
Tarkvaraarendus

Ruby 3.0. Ruby ja vähemtuntud privaatsuskontrolli meetodid

The Codest

Tomasz Szkaradek

Arendusarhitekt

Ruby üks armastatumaid omadusi on selle väga paindlik süntaks. Mulle isiklikult meeldib Ruby selle eest, kui palju võimalusi meil on klasside ja nende omaduste defineerimisel, ja seda ma ka käesolevas artiklis arutan.

Põhilahendused

Oletame, et kasutame klassi Foo, millel on üks avalik meetod ja üks privaatne meetod:

klass Foo
  def bar
    :awesome
  end

  private

  def baz
    :something_private
  end
end

Kõik on suurepärane, me näeme sellist lahendust praktiliselt igas projekt. Käivitus Foo.new.baz põhjustab vea NoMethodError (privaatne meetod 'baz', mis on kutsutud # jaoks ) ja seda me kavatsesime teha. Mis juhtub, kui me üritame salvestusformaati muuta ja lisada klassi definitsioonis eesliite private?

klass Foo
  def bar
    :awesome
  end

  private def baz
    :something_private
  end
end

Nagu näete pärast programmi kood, see tegelikult töötab! Miks me saame sisestada meetodi nähtavuse enne selle tegemist? Sest meetodi defineerimisel tagastab def meetodi nime sümbolina. See väljend ei ole ainult osa süntaksist, vaid de facto meetod, mis on tuletatud Module klassist ja käsitleb seda sümbolit argumendina. Lisateavet leiate dokumentatsioonist sellel lingil. Kuna see algas nii lihtsalt private'iga, siis proovime muuta privaatse meetodi nähtavust.

klass Foo
  def bar
    :awesome
  end

  private def baz
    :something_private
  end

  public :baz
end

Mis juhtub pärast koodi käivitamist?

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

Edu! Meie meetodi alused said avalikuks, sest me tegime selle kaks korda nähtavaks. Loomulikult kehtib sama toiming ka moodulite kohta.
​
Suurepärane, aga kuhu see meid viib?
​
See funktsionaalsus annab meile palju, sest me saame meetodi määratlemisel vabalt muuta meetodi nähtavust või isegi meetodite nähtavust nende pärimisel.

Nüüd vaatame, mida Ruby 2.7 suudab teha aliaside ja aktsessorite nähtavuse muutmise osas.

klass Foo
  private attr_accessor :awesome_variable
end

Kahjuks saame vea, kuna privaatne meetod ootab sümboleid ja attr_accessor. Kood tagastab nil ja seega ei ühildu see meetod Ruby 2.7 privaatse kasutusega. Millised on siis meie võimalused?

  1. Me saame kasutada attr_accessor võtmesõna private all, et see toimiks, st me saame vea, kui me tahame viidata awesome_variableawesome_variable meetod.
klass Foo
  private

  attr_accessor :awesome_variable
end
  1. Teine võimalus on käivitada privaatne meetod meetodite poolt genereeritud meetodite attr_attribuut; sel juhul peame me ka meeles pidama, et sisestame sinna seadistaja.
klass Foo
  attr_accessor :awesome_variable

  private :awesome_variable, :awesome_variable=
end

Probleemid attr_ * meetodid ei ole ainsad takistused. Sama raskusega võime kokku puutuda ka siis, kui tahame luua privaatse varjunime.

klass Foo
  private alias :bar, :awesome_bar
end

Ruby 3.0 ja meie äri

Õnneks toob Ruby 3.0 suure muudatuse, kuna nähtavuse meetodid võivad võtta argumendina massiivi ja meetodite alias, attr_ *, saab massiivi nullida defineeritud meetodite nimedega. Saate lugeda rohkem siin.

Nüüd vaatame mõned näited viimases eubas ja kontrollime, kas muudatused on tegelikult tehtud ja kuidas me saame neid kasutada.
​
Esimeses näites kasutame enne attr accessori private:

klass Foo
  private attr_accessor :awesome_variable
end

Selline üleskutse ei põhjusta vigu süntaksi lahtimõtestamisel ja mis on oluline, et awesome_variable jaawesome_variable =meetodid muutuvad privaatseks.
​
Alias meetod teeb sama, sest nüüd tagastab ta ka sümboli uue meetodi nimena ja teeb selle nähtavaks.

klass Foo
  private alias :bar, :awesome_bar
end

Huvitav on see, et me võime süveneda ka edasistesse meetoditesse, nt vingeprint-moodulit saab kutsuda private ja attr vahel.lugeja; oluline on, et selline meetod tagastab massiivi nende meetodite nimedega, mis on väljendi paremal poolel.

klass Moodul
  def awesome_print(nimed)
    puts names
    names
  end
end
klass Foo
  private awesome_print attr_reader :awesome_bar
end 

Kokkuvõte

Loodan, et see artikkel on teile kasulik! Ruby 3.0 kohta rohkem uudiseid. loe lähemalt siin.

Head kodeerimist!

Ruby arendaja pakkumine

Loe edasi:

Ole vait ja võta oma raha #1: Varjatud kulud ja tegelik paindlikkus tootearendusprotsessis

CTO väljakutsed - tarkvaratoodete laiendamine ja arendamine

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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