(function(w,d,s,l,i){w[l]=w[l]|||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=? 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Rubīns 3.0. Ruby un mazāk zināmas privātuma kontroles metodes - The Codest
The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2019-09-03
Programmatūras izstrāde

Rubīns 3.0. Ruby un mazāk zināmas privātuma kontroles metodes

The Codest

Tomasz Szkaradek

Attīstības arhitekts

Viena no iecienītākajām Ruby iezīmēm ir tā ļoti elastīgā sintakse. Personīgi es mīlu Ruby par to, cik daudz iespēju mums ir definēt klases un to īpašības, un tieši par to es runāšu šajā rakstā.

Pamata risinājumi

Pieņemsim, ka mēs izmantojam klasi Foo, kurai ir viena publiskā metode un viena privātā metode:

klase Foo
  def bar
    :awesome
  beigas

  privāts

  def baz
    :something_private
  beigas
end

Viss ir lieliski, mēs redzam šādu risinājumu praktiski katrā projekts. Darbojas Foo.new.baz izraisīs kļūdu NoMethodError (privātā metode ‘baz’ izsaukta # ) un to mēs arī gribējām darīt. Kas notiks, ja mēs mēģināsim mainīt saglabāšanas formātu un klases definīcijā kā prefiksu pievienosim private?

klase Foo
  def bar
    :awesome
  beigas

  privāts def baz
    :something_private
  end
end

Kā redzat pēc kods, tas patiešām darbojas! Kāpēc mēs varam ievadīt metodes redzamību pirms tās veikšanas? Tāpēc, ka, definējot metodi, def atgriež metodes nosaukumu kā simbolu. Šī izteiksme ir ne tikai sintakses daļa, bet de facto metode, kas atvasināta no klases Module un šo simbolu uzskata par argumentu. Lai iegūtu vairāk informācijas, lūdzu, skatiet dokumentāciju šajā saitē. Tā kā ar privāto metodi tas sākās tik vienkārši, mēģināsim mainīt privātās metodes redzamību.

klase Foo
  def bar
    :awesome
  beigas

  privāts def baz
    :something_private
  end

  public :baz
end

Kas notiks pēc koda palaišanas?

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

Panākumi! Mūsu bāzu metode kļuva publiski pieejama, jo mēs to padarījām redzamu divreiz. Protams, tāda pati darbība attiecas arī uz moduļiem.
​
Lieliski, bet kur tas nokļūst mums?
​
Šī funkcionalitāte dod mums daudz, jo mēs varam brīvi mainīt metodes redzamību, to definējot, vai pat mainīt metožu redzamību, tās mantojot.

Tagad aplūkosim, ko Rubīns 2.7 var mainīt aizstājvārdu un piekļuves vārdu redzamību.

klase Foo
  privātais attr_accessor :awesome_variable
beigas

Diemžēl tiek pieļauta kļūda, jo privātā metode sagaida simbolus un attr_accessor. Kods atgriež nil, un tādējādi šī metode nav saderīga ar Ruby 2.7 privāto izmantošanu. Kādas ir mūsu iespējas?

  1. Mēs varam izmantot attr_accessor zem atslēgvārda private, lai tas darbotos, t. i., mēs saņemsim kļūdu, kad mēs gribēsim atsaukties uz lielisks_mainīgaislielisks_mainīgais metode.
klase Foo
  privāts

  attr_accessor :awesome_variable
beigas
  1. Otra iespēja ir izpildīt privāto metodi metodēm, ko ģenerē attr_attribute; šajā gadījumā mums arī jāatceras, ka tur ir jāievada iestatītājs.
klase Foo
  attr_accessor :awesome_variable

  privāts :awesome_mainīgais, :awesome_mainīgais=
end

Problēmas ar attr_ * metodes nav vienīgie šķēršļi. Ar tādām pašām grūtībām varam saskarties, ja vēlamies izveidot privātu aizstājvārdu.

klase Foo
  privātais alias :bar, :awesome_bar
beigas

Ruby 3.0 un mūsu uzņēmējdarbība

Par laimi, Ruby 3.0 ievieš lielas izmaiņas, jo redzamības metodes var pieņemt masīvu kā argumentu, un metožu alias, attr_ *, var atjaunot masīvu ar definēto metožu nosaukumiem. Jūs varat lasīt vairāk šeit.

Tagad aplūkosim dažus piemērus jaunākajā euba versijā un pārbaudīsim, vai izmaiņas patiešām ir veiktas un kā mēs tās varam izmantot.
​
Pirmajā piemērā izmantosim private pirms attr accessor:

klase Foo
  privātais attr_accessor :awesome_variable
beigas

Šāds izsaukums neradīs sintakses analīzes kļūdas, un, kas ir svarīgi. awesome_mainīgais unlielisks_mainīgais =metodes kļūst privātas.
​
Tāda pati būs arī alias metode, jo tagad tā arī atgriež simbolu kā jaunās metodes nosaukumu un padara to redzamu.

klase Foo
  privātais alias :bar, :awesome_bar
beigas

Interesanti ir tas, ka mēs varam izmantot arī citas metodes, piemēram, lieliskoprint moduli var izsaukt starp private un attrlasītājs; ir svarīgi, lai šāda metode atgrieztu masīvu ar metožu nosaukumiem, kas ir izteiksmes labajā pusē.

klase Modulis
  def awesome_print(names)
    puts names
    names
  end
end
klase Foo
  private awesome_print attr_reader :awesome_bar
end 

Kopsavilkums

Ceru, ka šis raksts jums būs noderīgs! Ja ir vairāk ziņu par Ruby 3.0. lasīt vairāk šeit.

Laimīgu kodēšanu!

Ruby izstrādātāja piedāvājums

Lasīt vairāk:

#1: Slēptās izmaksas un reāla elastība produktu izstrādes procesā

CTO izaicinājumi - programmatūras produktu paplašināšana un izaugsme

Saistītie raksti

Ilustrācija viedtālruņa veselības aprūpes lietotnei ar sirds ikonu un pieaugošo veselības diagrammu, kas apzīmēta ar The Codest logotipu, kurš pārstāv digitālās veselības un HealthTech risinājumus.
Programmatūras izstrāde

Veselības aprūpes programmatūra: Mārketinga programmatūra: veidi, izmantošanas gadījumi

Šodien veselības aprūpes organizāciju rīcībā esošie rīki vairs neatgādina papīra diagrammas, kas tika izmantotas pirms vairākiem gadu desmitiem. veselības aprūpes programmatūra tagad atbalsta veselības aprūpes sistēmas, pacientu aprūpi un mūsdienīgu veselības aprūpes sniegšanu klīniskajās un...

TĀKĀDĒJAIS
Abstrakta ilustrācija ar lejupejošu joslu diagrammu ar augošu bultiņu un zelta monētu, kas simbolizē izmaksu efektivitāti vai ietaupījumus. Augšējā kreisajā stūrī redzams The Codest logotips ar saukli "In Code We Trust" uz gaiši pelēka fona.
Programmatūras izstrāde

Kā paplašināt izstrādātāju komandu, nezaudējot produkta kvalitāti

Palielināt izstrādātāju komandu? Uzziniet, kā augt, nezaudējot produkta kvalitāti. Šajā rokasgrāmatā aplūkotas pazīmes, kas liecina, ka ir pienācis laiks paplašināt komandu, komandas struktūra, pieņemšana darbā, vadība un rīki, kā arī tas, kā The Codest var...

TĀKĀDĒJAIS
Programmatūras izstrāde

Uz nākotni noturīgu tīmekļa lietojumprogrammu veidošana: The Codest ekspertu komandas ieskats

Uzziniet, kā The Codest izceļas mērogojamu, interaktīvu tīmekļa lietojumprogrammu izveidē, izmantojot modernākās tehnoloģijas un nodrošinot viengabalainu lietotāja pieredzi visās platformās. Uzziniet, kā mūsu zināšanas veicina digitālo transformāciju un biznesa...

TĀKĀDĒJAIS
Programmatūras izstrāde

Top 10 Latvijā bāzēti programmatūras izstrādes uzņēmumi

Mūsu jaunākajā rakstā uzziniet vairāk par Latvijas labākajiem programmatūras izstrādes uzņēmumiem un to inovatīvajiem risinājumiem. Uzziniet, kā šie tehnoloģiju līderi var palīdzēt uzlabot jūsu biznesu.

thecodest
Uzņēmumu un mērogošanas risinājumi

Java programmatūras izstrādes pamati: A Guide to Outsourcing Successfully

Izpētiet šo būtisko rokasgrāmatu par veiksmīgu outsourcing Java programmatūras izstrādi, lai uzlabotu efektivitāti, piekļūtu speciālajām zināšanām un sekmīgi īstenotu projektus ar The Codest.

thecodest

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

    The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

    Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

    Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lt_LTLithuanian is_ISIcelandic lvLatvian