window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = vindue if (w.LeadBooster) { console.warn('LeadBooster findes allerede') } 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 og mindre kendte metoder til kontrol af privatlivets fred - The Codest
Codest
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Industrier
    • Fintech og bankvirksomhed
    • E-commerce
    • Adtech
    • Sundhedsteknologi
    • Produktion
    • Logistik
    • Biler
    • IOT
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
Pil tilbage GÅ TILBAGE
2021-01-28
Udvikling af software

Ruby 3.0. Ruby og mindre kendte metoder til kontrol af privatlivets fred

Codest

Tomasz Szkaradek

Udviklingsarkitekt

En af de mest elskede funktioner i Ruby er dens meget fleksible syntaks. Personligt elsker jeg Ruby for de mange muligheder, vi har for at definere klasser og deres egenskaber, og det er det, jeg vil diskutere i denne artikel.

Grundlæggende løsninger

Lad os antage, at vi bruger klassen Foo, som har en offentlig metode og en privat metode:

klasse Foo
  def bar
    :fantastisk
  end

  privat

  def baz
    :noget_privat
  slut
slut

Alt er godt, vi ser en sådan løsning i stort set alle projekt. Løb Foo.new.baz vil forårsage fejlen NoMethodError (privat metode 'baz' kaldet for # ) og det var det, vi havde tænkt os at gøre. Hvad sker der, hvis vi prøver at ændre gemmeformatet og tilføjer private som præfiks i klassedefinitionen?

klasse Foo
  def bar
    :fantastisk
  end

  privat def baz
    :noget_privat
  end
slut

Som du kan se, når du har kørt Kodedet virker faktisk! Hvorfor kan vi indtaste metodens synlighed, før vi gør det? Fordi når man definerer en metode, returnerer def navnet på metoden som et symbol. Dette udtryk er ikke kun en del af syntaksen, men de facto en metode, der er afledt af Module-klassen og behandler dette symbol som et argument. For mere information, se venligst dokumentationen i dette link. Da det startede så nemt med private, så lad os prøve at ændre synligheden af den private metode.

klasse Foo
  def bar
    :fantastisk
  end

  privat def baz
    :noget_privat
  end

  offentlig :baz
end

Hvad sker der, når du har kørt koden?

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

Det lykkedes! Vores basemetode er blevet offentlig, fordi vi har gjort den synlig to gange. Det samme gælder selvfølgelig for modulerne.
​
Fint, men hvor fører det os hen?
​
Denne funktionalitet giver os meget, fordi vi frit kan ændre synligheden af en metode, mens vi definerer den, eller endda ændre synligheden af metoder, når vi arver dem.

Lad os nu se på, hvad Ruby 2.7 kan gøre med hensyn til at ændre synligheden af aliaser og accessorer.

klasse Foo
  privat attr_accessor :awesome_variable
slut

Desværre får vi en fejl, da den private metode forventer symbols og attr_accessor. Koden returnerer nil, og dermed er denne metode ikke kompatibel med den private brug i Ruby 2.7. Så hvad er vores muligheder?

  1. Vi kan bruge attr_accessor under private-nøgleordet for at få det til at fungere, dvs. vi vil få en fejl, når vi vil henvise til fantastisk_variabel fantastisk_variabel metode.
klasse Foo
  privat

  attr_accessor :awesome_variable
slut
  1. Den anden mulighed er at udføre den private metode på metoder, der er genereret af attr_attribut; i dette tilfælde skal vi også huske at indtaste setteren der.
klasse Foo
  attr_accessor :awesome_variable

  privat :awesome_variable, :awesome_variable=
slut

Problemer med attr_ *. metoder er ikke de eneste forhindringer. Vi kan støde på samme problem, når vi vil oprette et privat alias.

klasse Foo
  privat alias :bar, :awesome_bar
slut

Ruby 3.0 og vores forretning

Heldigvis introducerer Ruby 3.0 en stor ændring, da synlighedsmetoderne kan tage et array som argument, og metodernes alias, attr_ *, kan nulstille arrayet med navnene på de metoder, der er blevet defineret. Du kan læse mere her.

Lad os nu se nogle eksempler i den seneste euba og tjekke, om ændringerne rent faktisk er blevet foretaget, og hvordan vi kan bruge dem.
​
I det første eksempel bruger vi private før attr accessor:

klasse Foo
  privat attr_accessor :awesome_variable
slut

Et sådant kald vil ikke forårsage fejl i analysen af syntaksen, og hvad der er vigtigt er, at fantastisk_variabel ogawesome_variable = fantastisk_variabelmetoder bliver private.
​
Alias-metoden gør det samme, men nu returnerer den også et symbol som navn på den nye metode og gør den synlig.

klasse Foo
  privat alias :bar, :awesome_bar
slut

En interessant kendsgerning er, at vi også kan dykke ned i yderligere metoder, f.eks. den fantastiskeprintmodul kan kaldes mellem private og attrDet er vigtigt, at en sådan metode returnerer et array med navnene på de metoder, der står på højre side af udtrykket.

klasse Modul
  def awesome_print(navne)
    sætter navne ind
    navne
  slut
slut
klasse Foo
  privat awesome_print attr_reader :awesome_bar
end 

Sammenfatning

Jeg håber, du vil finde denne artikel nyttig! I tilfælde af flere nyheder om Ruby 3.0. læs mere her.

God fornøjelse med kodningen!

Ruby-udvikler-tilbud

Læs mere om det:

Hold kæft og tag dine penge #1: Skjulte omkostninger og ægte agilitet i produktudviklingsprocessen

CTO-udfordringer - opskalering og vækst af softwareprodukter

Relaterede artikler

Udvikling af software

Byg fremtidssikrede webapps: Indsigt fra The Codest's ekspertteam

Oplev, hvordan The Codest udmærker sig ved at skabe skalerbare, interaktive webapplikationer med banebrydende teknologier, der leverer sømløse brugeroplevelser på tværs af alle platforme. Lær, hvordan vores ekspertise driver digital transformation og...

DENKODEST
Udvikling af software

Top 10 Letlands-baserede softwareudviklingsvirksomheder

Læs om Letlands bedste softwareudviklingsvirksomheder og deres innovative løsninger i vores seneste artikel. Find ud af, hvordan disse teknologiledere kan hjælpe med at løfte din virksomhed.

thecodest
Løsninger til virksomheder og scaleups

Grundlæggende om Java-softwareudvikling: En guide til succesfuld outsourcing

Udforsk denne vigtige guide til vellykket outsourcing af Java-softwareudvikling for at forbedre effektiviteten, få adgang til ekspertise og skabe projektsucces med The Codest.

thecodest
Udvikling af software

Den ultimative guide til outsourcing i Polen

Den voldsomme stigning i outsourcing i Polen er drevet af økonomiske, uddannelsesmæssige og teknologiske fremskridt, der fremmer it-vækst og et erhvervsvenligt klima.

TheCodest
Løsninger til virksomheder og scaleups

Den komplette guide til IT-revisionsværktøjer og -teknikker

IT-revisioner sikrer sikre, effektive og kompatible systemer. Lær mere om deres betydning ved at læse hele artiklen.

Codest
Jakub Jakubowicz CTO og medstifter

Tilmeld dig vores vidensbase, og hold dig opdateret om ekspertisen fra it-sektoren.

    Om os

    The Codest - International softwareudviklingsvirksomhed med tech-hubs i Polen.

    Storbritannien - Hovedkvarter

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale teknologiske knudepunkter

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Hjerneambassaden, Konstruktorska
      11, 02-673 Warszawa, Polen

      Codest

    • Hjem
    • Om os
    • Serviceydelser
    • Casestudier
    • Ved hvordan
    • Karriere
    • Ordbog

      Serviceydelser

    • Det rådgivende
    • Udvikling af software
    • Backend-udvikling
    • Frontend-udvikling
    • Staff Augmentation
    • Backend-udviklere
    • Cloud-ingeniører
    • Dataingeniører
    • Andet
    • QA-ingeniører

      Ressourcer

    • Fakta og myter om at samarbejde med en ekstern softwareudviklingspartner
    • Fra USA til Europa: Hvorfor beslutter amerikanske startups sig for at flytte til Europa?
    • Sammenligning af Tech Offshore-udviklingsknudepunkter: Tech Offshore Europa (Polen), ASEAN (Filippinerne), Eurasien (Tyrkiet)
    • Hvad er de største udfordringer for CTO'er og CIO'er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Vilkår for brug af hjemmesiden

    Copyright © 2025 af The Codest. Alle rettigheder forbeholdes.

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