(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'); Hash: Að nota eða ekki að nota - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2022-07-12
Hugbúnaðarþróun

Hash: Að nota eða ekki að nota

The Codest

Krzysztof Buszewicz

Eldri nemandi Software Engineer

Lestu grein frá Ruby-sérfræðingi okkar og lærðu hvers vegna þú þarft ekki alltaf að nota hash.

Hér er tómt.

Inngangur

Þegar við viljum samansafna einhverju, notum við mjög oft 1TP78Kenna_með_hlut eða framlengja venjulega lykkja að nota #with_object. En í flestum tilfellum Rúbín forritarar Þeir nota einfaldan hash sem samansafnara og kannski er það í lagi, en í þessari grein vil ég sýna þér að það þarf ekki alltaf að vera hash.

Mál

Við gerum ráð fyrir að allar skrárnar séu staðsettar í einni möppu (fólk).

Segjum að við höfum eftirfarandi fólk/fólk.csv file:

Fyrsta nafn, Eftirnafn, Aldur
 John, Doe, 24
 Jane, Dee, 45
 Josh, Bee, 55
 Andrea, Boya, 34
 Andrew, Moore, 54Hljóðskrift

Við viljum finna heildarfjölda raða og meðalaldur – við gætum skrifað eftirfarandi skrift:

people/parser.rb

require 'csv'

aggregated = CSV.foreach('people.csv', headers: true)
.withobject({ total: 0, totalage: 0 }) do |row, agg|
agg[:total] += 1
agg[:totalage] += row['Age'].toi
end

total = aggregated[:total]
averageage = aggregated[:totalage].to_f / total

puts "Samtals: #{total}"
puts "Meðalaldur: #{average_age}"

Og já, það gerir hlutinn en að lesa svona kóði er vafasöm ánægja. Það finnst eins og það sé of lágur stigi. Við getum bætt það með því að bjóða upp á sérhæfðan samansafnara fyrir lykkja.

people/age_aggregator.rb

class AgeAggregator
attrreader :total, :totalage

def initialize
@total = 0
@total_age = 0
end

def increment!
@total += 1
end

def incrementage!(age)
@totalage += age
end

def averageage
totalage.to_f / total
end
end

Og þá myndi lykkjan okkar líta svona út:

people/parser.rb

require 'csv'
requirerelative './ageaggregator.rb'

aggregated = CSV.foreach('people.csv', headers: true)
.withobject(AgeAggregator.new) do |row, agg|
agg.increment!
agg.incrementage!(row['Age'].to_i)
end

puts "Samtals: #{aggregated.total}"
puts "Meðalaldur: #{aggregated.average_age}"

Ég held að það sé mun skýrara.

Yfirlit

Við höfum skrifað meira kóða, en smáatriðin á lægra stigi hafa verið færð í aðskilda klasa. Nú les aðalskriptan mun betur.

Auðvitað geturðu haldið því fram að dæmið sé of einfalt til að leggja svona mikla vinnu í að endurskipuleggja kóðann, en komon – þetta er bara dæmi ;). Ef þú þyrftir að samræma meira gögn, slík samansafnara-hlutir eru í raun leiðin til að bjarga.

samstarfsfáninn

Lesa meira:

Kostir og gallar við forritunarþróun í Ruby

Lestar og önnur samgöngutæki

Rails-þróun með tmux, vim, fzf og ripgrep

Tengdar greinar

Hugbúnaðarþróun

5 dæmi um bestu notkun Ruby

Hefurðu einhvern tíma velt því fyrir þér hvað við getum gert með Ruby? Jæja, loftið er líklega takmörkin, en við erum fús til að segja frá nokkrum meira eða minna þekktum dæmum...

The Codest
Pawel Muszynski Software Engineer
Hugbúnaðarþróun

Að ráða innri á móti ytri forriturum

Að ráða innan fyrirtækisins eða utan? Þetta er hið algjörasta vafamál! Kynntu þér kosti outsourcing eða að byggja upp innanhúss team í eftirfarandi grein.

The Codest
Grzegorz Rozmus Java einingaleiðtogi
Hugbúnaðarþróun

Árangurs saga The Codest: Frá Ruby-þróunaraðila að leiðtoga meistaranámskeiðs

Kynntu þér Tomasz Szkaradek – yfirmann mannauðsmála hjá The Codest. Kynntu þér ferðalag Tomek í starfsferlinum, frá Ruby-stjóra til meðlims kjarnahópsins. Hvernig tókst honum að...

The Codest
Tomasz Szkaradek Þróunarskipulagsarkitekt
Hugbúnaðarþróun

Fáðu nánari upplýsingar um Ruby on Rails með Pub/Sub

Pub/Sub getur fært verkefninu margvíslega kosti – það getur gert kóðann hreinan, losað þjónusturnar og gert þær auðveldlega stækkanlegar. Lærðu meira um Pub/Sub í eftirfarandi grein...

The Codest
Michal Pawlak Æðsti Ruby-þróunaraðili

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    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 lvLatvian lt_LTLithuanian is_ISIcelandic