window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } 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 e i metodi di controllo della privacy meno conosciuti - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2021-01-28
Sviluppo di software

Ruby 3.0. Ruby e i metodi di controllo della privacy meno conosciuti

The Codest

Tomasz Szkaradek

Architetto dello sviluppo

Una delle caratteristiche più amate di Ruby è la sua sintassi molto flessibile. Personalmente, amo Ruby per le numerose possibilità che abbiamo di definire le classi e le loro proprietà, ed è di questo che parlerò in questo articolo.

Soluzioni di base

Supponiamo di utilizzare la classe Foo, che ha un metodo pubblico e uno privato:

classe Foo
  def bar
    :impressionante
  fine

  privato

  def baz
    :qualcosa_privato
  fine
fine

Tutto va benissimo, vediamo una soluzione di questo tipo praticamente in ogni progetto. In esecuzione Foo.new.baz causerà l'errore NoMethodError (metodo privato 'baz' chiamato per # ) ed è quello che intendevamo fare. Cosa succede se proviamo a cambiare il formato di salvataggio e ad aggiungere private come prefisso nella definizione della classe?

classe Foo
  def bar
    :impressionante
  fine

  privato def baz
    :qualcosa_privato
  fine
fine

Come si può vedere dopo aver eseguito il programma codicefunziona davvero! Perché possiamo inserire la visibilità del metodo prima di farlo? Perché quando si definisce un metodo, def restituisce il nome del metodo come simbolo. Questa espressione non è solo una parte della sintassi, ma di fatto un metodo derivato dalla classe Module e che tratta questo simbolo come un argomento. Per ulteriori informazioni, consultare la documentazione in questo link. Dal momento che è iniziato in modo così semplice con private, proviamo a cambiare la visibilità del metodo private.

classe Foo
  def bar
    :impressionante
  fine

  privato def baz
    :qualcosa_privato
  fine

  pubblico :baz
fine

Cosa succede dopo l'esecuzione del codice?

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

Successo! Il nostro metodo delle basi è diventato pubblico perché lo abbiamo reso visibile due volte. Naturalmente, la stessa operazione vale per i moduli.
​
Ottimo, ma dove ci porta?
​
Questa funzionalità ci dà molto perché possiamo cambiare liberamente la visibilità di un metodo mentre lo definiamo, o anche cambiare la visibilità dei metodi quando li ereditiamo.

Vediamo ora cosa può fare Ruby 2.7 in termini di modifica della visibilità di alias e accessor.

classe Foo
  private attr_accessor :awesome_variable
fine

Sfortunatamente, si ottiene un errore perché il metodo privato si aspetta simboli e attr_accessor. Il codice restituisce nil e quindi questo metodo non è compatibile con l'uso privato in Ruby 2.7. Quali sono quindi le nostre opzioni?

  1. Possiamo usare attr_accessor sotto la parola chiave private per farlo funzionare, ma otterremo un errore quando vogliamo fare riferimento all'oggetto fantastico_variabile fantastico_variabile metodo.
classe Foo
  privato

  attr_accessor :awesome_variable
fine
  1. La seconda opzione consiste nell'eseguire il metodo privato sui metodi generati da attr_attributoIn questo caso, dobbiamo anche ricordarci di inserire il setter.
classe Foo
  attr_accessor :awesome_variable

  private :awesome_variable, :awesome_variable=
fine

Problemi con il attr_ * non sono gli unici ostacoli. Possiamo incontrare le stesse difficoltà quando vogliamo creare un alias privato.

classe Foo
  alias privati :bar, :awesome_bar
fine

Ruby 3.0 e la nostra attività

Fortunatamente, Ruby 3.0 introduce un grande cambiamento: i metodi di visibilità possono prendere un array come argomento e l'alias dei metodi, attr_ *, può reimpostare l'array con i nomi dei metodi che sono stati definiti. Per saperne di più qui.

Vediamo ora alcuni esempi nell'ultima euba e verifichiamo se le modifiche sono state effettivamente apportate e come possiamo utilizzarle.
​
Nel primo esempio, utilizziamo l'accessor private prima di attr:

classe Foo
  private attr_accessor :awesome_variable
fine

Una chiamata di questo tipo non causerà errori nell'analisi della sintassi e, cosa importante, l'opzione variabile_fantastica eawesome_variable =diventano privati.
​
Il metodo alias farà lo stesso, ma ora restituisce anche un simbolo come nome del nuovo metodo e lo rende visibile.

classe Foo
  alias privati :bar, :awesome_bar
fine

Un fatto interessante è che possiamo anche approfondire altri metodi, come ad esempio l'impressionanteIl modulo di stampa può essere chiamato tra private e attrè importante che tale metodo restituisca un array con i nomi dei metodi che si trovano sul lato destro dell'espressione.

classe Modulo
  def awesome_print(nomi)
    mette i nomi
    nomi
  fine
fine
classe Foo
  private awesome_print attr_reader :awesome_bar
fine 

Sintesi

Spero che questo articolo vi sia utile! In caso di ulteriori notizie su Ruby 3.0, leggete di più qui.

Buona codifica!

Offerta per sviluppatori Ruby

Per saperne di più:

Zitto e prendi i tuoi soldi #1: Costi nascosti e reale agilità nel processo di sviluppo del prodotto

CTO sfide - scalabilità e crescita dei prodotti software

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

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