window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() Ruby 3.0. Ruby en minder bekende privacycontrolemethoden - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2021-01-28
Software Ontwikkeling

Ruby 3.0. Ruby en minder bekende privacycontrolemethoden

The Codest

Tomasz Szkaradek

Ontwikkelingsarchitect

Een van de meest geliefde eigenschappen van Ruby is de zeer flexibele syntax. Persoonlijk hou ik van Ruby vanwege de vele mogelijkheden die we hebben in het definiëren van classes en hun eigenschappen, en dit is wat ik in dit artikel zal bespreken.

Basisoplossingen

Laten we aannemen dat we de klasse Foo gebruiken die één openbare methode en één privémethode heeft:

klasse Foo
  def bar
    :geweldig
  einde

  privé

  def baz
    :iets_particulier
  einde
einde

Alles is geweldig, we zien zo'n oplossing in vrijwel elke project. Hardlopen Foo.nieuw.baz veroorzaakt de fout NoMethodError (privémethode 'baz' aangeroepen voor # ) en dat is wat we wilden doen. Wat gebeurt er als we het opslagformaat proberen te wijzigen en private als voorvoegsel aan de klassedefinitie toevoegen?

klasse Foo
  def bar
    :geweldig
  einde

  privé def baz
    :iets_particulier
  einde
einde

Zoals je kunt zien na het uitvoeren van de codeHet werkt echt! Waarom kunnen we de zichtbaarheid van de methode invoeren voordat we het doen? Omdat bij het definiëren van een methode, def de naam van de methode als een symbool teruggeeft. Deze expressie is niet alleen een deel van de syntaxis, maar de facto een methode die is afgeleid van de klasse Module en die dit symbool als argument behandelt. Zie voor meer informatie de documentatie in deze link. Omdat het zo makkelijk begon met private, laten we proberen de zichtbaarheid van de private methode te veranderen.

klasse Foo
  def bar
    :geweldig
  einde

  privé def baz
    :iets_particulier
  einde

  publiek :baz
einde

Wat gebeurt er na het uitvoeren van de code?

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

Succes! Onze basismethode is nu publiek omdat we hem twee keer zichtbaar hebben gemaakt. Natuurlijk geldt dezelfde operatie voor de modules.
​
Geweldig, maar wat levert het ons op?
​
Deze functionaliteit geeft ons veel omdat we vrijelijk de zichtbaarheid van een methode kunnen veranderen tijdens het definiëren ervan, of zelfs de zichtbaarheid van methoden kunnen veranderen tijdens het overerven ervan.

Laten we nu eens kijken wat Ruby 2.7 kan doen in termen van het veranderen van de zichtbaarheid van aliassen en accessors.

klasse Foo
  privé attr_accessor :awesome_variable
einde

Helaas krijgen we een foutmelding omdat de private methode symbols en attr_accessor verwacht. De code retourneert nil en dus is deze methode niet compatibel met het private gebruik in Ruby 2.7. Dus wat zijn onze opties?

  1. We kunnen attr_accessor gebruiken onder het private keyword om het te laten werken, d.w.z. we krijgen een foutmelding als we willen verwijzen naar de ontzagwekkende_variabele ontzagwekkende_variabele methode.
klasse Foo
  privé

  attr_accessor :awesome_variable
einde
  1. De tweede optie is om de private methode uit te voeren op methoden die gegenereerd worden door attr_attribuut; in dit geval moeten we er ook aan denken om de setter daar in te voeren.
klasse Foo
  attr_accessor :awesome_variable

  privé :awesome_variable, :awesome_variable=
einde

Problemen met de attr_ * methoden zijn niet de enige obstakels. We kunnen hetzelfde probleem tegenkomen als we een privé alias willen maken.

klasse Foo
  privé alias :bar, :awesome_bar
einde

Ruby 3.0 en ons bedrijf

Gelukkig introduceert Ruby 3.0 een grote verandering, aangezien de zichtbaarheidsmethoden array als argument kunnen nemen en methoden alias, attr_ *, de array kan resetten met de namen van de methoden die zijn gedefinieerd. Je kunt meer lezen hier.

Laten we nu enkele voorbeelden bekijken in de nieuwste euba en controleren of de wijzigingen daadwerkelijk zijn doorgevoerd en hoe we ze kunnen gebruiken.
​
In het eerste voorbeeld gebruiken we private voor attr accessor:

klasse Foo
  privé attr_accessor :awesome_variable
einde

Een dergelijke aanroep zal geen fouten veroorzaken bij het parsen van de syntaxis en, wat belangrijk is, de ontzagwekkende_variabele enontzagwekkende_variabele =worden methoden privé.
​
De aliasmethode doet hetzelfde, maar geeft nu ook een symbool terug als de naam van de nieuwe methode en maakt deze zichtbaar.

klasse Foo
  privé alias :bar, :awesome_bar
einde

Een interessant feit is dat we ons ook kunnen verdiepen in andere methoden, bijvoorbeeld de geweldigeafdrukmodule kan worden aangeroepen tussen privé en attrlezer; het is belangrijk dat zo'n methode een array retourneert met de namen van de methoden die aan de rechterkant van de expressie staan.

Klasse Module
  def ontzagwekkend_afdrukken(namen)
    zet namen
    namen
  einde
einde
klasse Foo
  privé awesome_print attr_reader :awesome_bar
einde 

Samenvatting

Hopelijk vind je dit artikel nuttig! In het geval van meer nieuws over Ruby 3.0. lees meer hier.

Veel plezier met coderen!

Ruby Ontwikkelaar Aanbod

Lees meer:

Hou je mond en neem je geld #1: Verborgen kosten en echte flexibiliteit in het productontwikkelingsproces

CTO uitdagingen - schaalvergroting en groei van softwareproducten

Verwante artikelen

Software Ontwikkeling

Bouw Toekomstbestendige Web Apps: Inzichten van The Codest's Expert Team

Ontdek hoe The Codest uitblinkt in het creëren van schaalbare, interactieve webapplicaties met geavanceerde technologieën, het leveren van naadloze gebruikerservaringen op alle platforms. Ontdek hoe onze expertise digitale transformatie en business...

DE BESTE
Software Ontwikkeling

Top 10 in Letland gevestigde bedrijven voor softwareontwikkeling

Lees meer over de beste softwareontwikkelingsbedrijven van Letland en hun innovatieve oplossingen in ons nieuwste artikel. Ontdek hoe deze technologieleiders uw bedrijf kunnen helpen verbeteren.

thecodest
Oplossingen voor ondernemingen en schaalvergroting

Essentiële Java-softwareontwikkeling: Een gids voor succesvol uitbesteden

Verken deze essentiële gids over succesvolle outsourcing Java-softwareontwikkeling om de efficiëntie te verbeteren, toegang te krijgen tot expertise en projectsucces te stimuleren met The Codest.

thecodest
Software Ontwikkeling

De ultieme gids voor outsourcing in Polen

De sterke groei van outsourcing in Polen wordt gedreven door economische, educatieve en technologische vooruitgang, die IT-groei en een bedrijfsvriendelijk klimaat stimuleert.

DeCodest
Oplossingen voor ondernemingen en schaalvergroting

De complete gids voor IT-auditmiddelen en -technieken

IT-audits zorgen voor veilige, efficiënte en compliant systemen. Lees het volledige artikel om meer te weten te komen over het belang ervan.

The Codest
Jakub Jakubowicz CTO & medeoprichter

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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