Hash Werte identifizieren ohne Strings/ Symbole

Es ist sehr gebräuchlich, Hash Werte durch Schlüssel zu finden, die vom Datentyp String oder Symbol sind:

numbers = { 1: 'eins', 2: 'zwei', 3: 'drei' }
numbers[:2] # => "zwei"

Aber der Schlüssel kann von jedem bekannten Datentyp sein:

mixed = { 1 => 1, 3.5 => 'dreicommafünf', 1..5 => 'Bereich zwischen 1 und 5' }
mixed[3.5] # => 'dreicommafünf'
mixed[1..5] # => 'Bereich zwischen 1 und 5'

Natürlich ist es wichtig, dass der Schlüssel eindeutig ist, weil es sonst eine Ruby Warnung gibt, und das erste Schlüssel/ Werte Paar ignoriert wird:

numbers = { 2 => 2, 2 => 'zwei' } # warning: duplicated key at line 1 ignored: 2
# => {2=>"zwei"}

Ein sinnvoller use case könnte so aussehen (der Einfachheit halber unter Verwendung von Ruby on Rails’ ActiveRecord::Base):

people = Person.all.group_by(&:birthday) 
# => { Sat, 21 Sep 1996 => [#<Person 1>, #<Person 2>], Fri, 19 Apr 1996 => [#<Person 3>] }

Das ActiveRecord::Base model Person findet alle Personen. Das result set wird dann mit dem Enumerator Enumerable#group_by iteriert und nach dem jeweiligen Personengeburtstag gruppiert, wobei der Schlüssel der Geburtstag vom Datentyp Date ist.
Der Zugriff sieht dann folgendermaßen aus:

people[18.years.ago] # => [#<Person 1>, #<Person 2>]

Fantastisch.