Hashe létrehozása és használata a rubinnal

tömbök nem csak a változók gyűjteményeinek kezelése a Rubin. A változók gyűjteményének másik típusa a hash, amelyet asszociatív tömbnek is neveznek. A hash olyan, mint egy tömb abban a változóban, amely más változókat tárol. A hash ugyanakkor nem olyan tömb, mint a tárolt változók, amelyek nem kerülnek tárolásra meghatározott sorrendben, és egy kulccsal lekérdezik őket, nem pedig a gyűjteményben levő helyük alapján.

Hozzon létre egy hasábot kulcs- / értékpárokkal

A hash hasznos az úgynevezett tárolásához kulcs / érték pár. A kulcs / érték párnak van azonosítója, amely jelzi, hogy a hash melyik változóját kívánja elérni és egy változó, amely abban a helyzetben tárolható a hashban. Például egy tanár tárolhatja a hallgató osztályait hash-ban. Bob fokozatát hash-val lehet elérni a "Bob" gomb segítségével, és az ezen a helyen tárolt változó Bob besorolása lenne.

A hash változó ugyanúgy hozható létre, mint a tömb változó. A legegyszerűbb módszer egy üres hash objektum létrehozása, és kitöltése kulcs / érték párokkal. Vegye figyelembe, hogy az index operátort használják, de szám helyett a hallgató nevét kell használni.

instagram viewer

Ne feledje, hogy a hash nem rendezett, azaz nincs meghatározva eleje vagy vége, mivel van egy tömb. Tehát nem adhat hozzá hash-hoz. Az értékeket egyszerűen beillesztik a hashba az index operátor segítségével.

#! / usr / bin / env rubin
osztályzatok = Hash.new
fokozat ["Bob"] = 82
fokozat ["Jim"] = 94
évfolyamok ["Billy"] = 58
fokozatot tesz ["Jim"]

Hash Literals

Csakúgy, mint a tömbök, a hash-ek hash-kel is létrehozhatók literálok. A hasin literálok szögletes zárójelek helyett a göndör zárójeleket használják, és a kulcsérték-párok össze vannak kötve =>. Például egy kivonat, amelyen egyetlen kulcs / értékpár van a Bob / 84-nél, így néz ki: {"Bob" => 84}. További kulcs- / értékpárokat adhatunk a hash literálhoz vesszővel elválasztva. A következő példában egy kivonatot hozunk létre a hallgatók osztályaival.

#! / usr / bin / env rubin
fokozat = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
fokozatot tesz ["Jim"]

A változók elérése a hasábban

Előfordulhat, hogy minden változóhoz hozzá kell férnie a hash-hoz. A hash változóit továbbra is áthúzhatja a minden egyes hurok, bár nem fog ugyanúgy működni, mint a minden egyes hurok tömbváltozókkal. Mivel a hash nincs rendezve, az a sorrend minden egyes A kulcs / érték párok fölé hurkoló hurok lehet, hogy nem egyezik meg azzal, ahogyan beillesztette őket. Ebben a példában egy kivonatminőséget áthúznak és kinyomtatnak.

#! / usr / bin / env rubin
fokozat = {"Bob" => 82,
"Jim" => 94,
"Billy" => 58
}
fokozat.minden | név, fokozat |
"# {name}: # {grade}"
vég